Использование find и exec внутри цикла while - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть файл .txt, который содержит имена различных файлов.

Когда я просто использую цикл while, он работает нормально,

while read -r name
do
  echo "$name"
done <fileNames.txt

Но, когда я пытаюсь использовать поиск внутри цикла, например:

while read -r name
do
  find ./ -iname "$name" -exec sed -i '1s/^/NEW LINE INSERTED \n/' '{}' ';'
done < fileNames.txt

ничего не происходит!

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

Что я здесь не так делаю?

Я пытаюсь прочитать имена файлов из файла, найти его в папке рекурсивно, а затем добавить строку в начале, используя sed.

1 Ответ

0 голосов
/ 15 сентября 2018

Вместо этого используйте xargs, чтобы получить результаты поиска

while read -r name
do
  find ./ -iname "$name" |xargs sed -i '1s/^/NEW LINE INSERTED \n/'
done <fileNames.txt
...