Удалить точную строку из файлов в папке, используя grep - PullRequest
0 голосов
/ 04 января 2019

У меня есть следующий код:

cd /home/pi/.attract/romlists; for file in *.tag ; do grep -v -F 'Arcade Snooker [AGA]' $file > $file1.tmp && mv -f $file1.tmp $file; done

Это хорошо работает для удаления фиксированной строки "Arcade Snooker [AGA]" из файла, такого как "Amiga.tag".Однако он не удаляет строку из «Atari 800.tag» или из любого другого файла, в имени которого есть «пробел».Результатом «Atari 800.tag» является следующая ошибка:

grep: Atari: No such file or directory
grep: 800.tag: No such file or directory

Какие изменения мне нужно внести в код, пожалуйста, чтобы он удалил «Arcade Snooker [AGA]» из «Atari 800».tag "и из других таких файлов, содержащих пробелы в своих именах?

Я бы предпочел иметь только одну строку кода, пожалуйста, как у меня сейчас.

Спасибо.

1 Ответ

0 голосов
/ 04 января 2019

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

cd /home/pi/.attract/romlists; for file in *.tag ; do grep -v -F 'Arcade Snooker [AGA]' "$file" > "$file1.tmp" && mv -f "$file1.tmp" "$file"; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...