как выполнить find для каждой строки из ls -1 ?
comm -12 <(ls -1 /media/32040-4354/Photos/) <(ls -1 /home/name/../photos/) | sed -e 's/^/\/home\/name\/..\/photos\//g'
пойдет?
sort <(ls 1) <(ls 2) | uniq -d
to :во второй папке есть subfolders
нужно для каждой папки в ls -1 выполнить команду find /home/name/../photos -iname "* output from ls -1 *"
или, иначе говоря, нужно найти папки в /home/name/../photos/ с именами, совпадающими с именами папок в /media/../Что-то как-то заумно формулируешь задачу :/
во второй папке есть subfolders
В какой второй папке?
find /media/32040-4354/Photos/ -maepth 1 -type d | sed 's#^.*/##' | while read dir; do find /home/name/../photos -type d -iname "$dir"; done
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. Если файлов не ужас как много, то после первого раза оно откешируется в системе и будет быстро искать. Так что разница в скорости работы не будет существенной.
по поводу частоты. К твоей количественной оценке стоит присовокупить ещё и качественную. Во-первых, скрипты намного надёжнее ручной обработки, вероятность ошибки уменьшается за счёт избавления от человеческого фактора. Во-вторых, написав скрипт, человек разгружает собственную оперативную память, посольку ему больше не нужно хранить такой же скрипт, только нацеленный на исполнение человеком, у себя в голове
Всем спасибо!
подскажите пожалуйста как направаить 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
for i in `ls`;Тут лучше так будет:
for i in *
Оставить комментарий
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/../