как выполнить find для каждой строки из ls -1 ?

digenet

подскажите пожалуйста как направаить output от ls -1 в find.
пробовал следующий скрипт - ls /media/32040-4354/Photos/ -1 | xargs -0 find /home/name/.../photos/
но не то получается
нужно для каждой папки в ls -1 выполнить команду find /home/name/../photos -iname "* output from ls -1 *"
или, иначе говоря, нужно найти папки в /home/name/../photos/ с именами, совпадающими с именами папок в /media/../

stm5872449

 
 comm -12 <(ls -1 /media/32040-4354/Photos/) <(ls -1 /home/name/../photos/) | sed -e 's/^/\/home\/name\/..\/photos\//g'

пойдет?

ppplva

sort <(ls 1) <(ls 2) | uniq -d

digenet

comm: file 2 is not in sorted order
to :во второй папке есть subfolders

Serab

у тебя так много фоточек или ты собираешься делать это так часто?

Anturag

нужно для каждой папки в ls -1 выполнить команду find /home/name/../photos -iname "* output from ls -1 *"
или, иначе говоря, нужно найти папки в /home/name/../photos/ с именами, совпадающими с именами папок в /media/../
Что-то как-то заумно формулируешь задачу :/
во второй папке есть subfolders

В какой второй папке? :confused:
 find /media/32040-4354/Photos/ -maepth 1 -type d | sed 's#^.*/##' | while read dir; do find /home/name/../photos -type d -iname "$dir"; done 

tokuchu

ls /media/32040-4354/Photos/ -1 | xargs -0 find /home/name/.../photos/
xargs -0 — это нужно, если строчки разделены нулевым символом, а не переводом строки. "ls -1" — разделяет переводом всё же.
А так можно для каждого имени отдельно сделать:
ls -1 /media/32040-4354/Photos/ | xargs -1 find /home/name/.../photos/ -iname

Для каждого имени из /media/... будет запущена отдельная команда find. Если файлов не ужас как много, то после первого раза оно откешируется в системе и будет быстро искать. Так что разница в скорости работы не будет существенной.

yroslavasako

по поводу частоты. К твоей количественной оценке стоит присовокупить ещё и качественную. Во-первых, скрипты намного надёжнее ручной обработки, вероятность ошибки уменьшается за счёт избавления от человеческого фактора. Во-вторых, написав скрипт, человек разгружает собственную оперативную память, посольку ему больше не нужно хранить такой же скрипт, только нацеленный на исполнение человеком, у себя в голове

digenet

Спасибо, работает!
Всем спасибо!

erotic

подскажите пожалуйста как направаить output от ls -1 в find.
пробовал следующий скрипт - ls /media/32040-4354/Photos/ -1 | xargs -0 find /home/name/.../photos/
Любишь ли ты циклы так, как люблю их я?

for i in `ls`; do find where -iname "$i"; done

tokuchu

for i in `ls`;
Тут лучше так будет:
for i in *
Оставить комментарий
Имя или ник:
Комментарий: