BASH - Проверить, существует ли файл, и если есть, добавить имя файла в .txt - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь создать сценарий bash, который сначала ищет имя, а затем проверяет, существует ли определенное имя файла, например, vacation021.jpg, в файловой системе, и если оно существует, я хочу добавить имя файла к файл .txt.

У меня много проблем с этим, я все еще новичок в bash.

Это все, что я получил.

> oldFiles.txt

files=$(grep "jane " list.txt)

for i in $files; do
  if test -e vacation021.jpg;
    then echo $i >> oldFiles.txt; fi
done

Это, однако, добавляет все отдельные слова из list.txt в oldFiles.txt.

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 17 июня 2020

for i in $files будет повторять каждое слово в $files, а не строки. Если вы хотите перебрать строки, перенаправьте вывод grep в l oop:

grep 'jane ' list.txt | while read -r i; do
    if test -e vacation021.jpg
    then printf "%s" "%i"
    fi
done > oldFiles.txt

Но, как указано в комментариях, если только файл vacation021.jpg не будет создан или удален во время l oop, вы можете просто использовать одиночный if:

if test -e vacation021.jpg
then
    grep 'jane ' list.txt > oldFiles.txt
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...