У меня есть текстовый файл со списком путей к различным файлам. Можно ли использовать команду, которая будет перебирать каждую строку и удалять файл по указанному пути?
command-line
files
дака
источник
источник
cat
не обязательный, вы можете использоватьstdin
перенаправление:< file xargs rm
cat file
» в (ba) sh или csh.cat
, как только что было сказано, пользуйтесьstdin
! Посмотрите на его обновленный ответВот один способ, который может работать с именами файлов с пробелами, обратной косой чертой и другими странными символами:
Это будет читать каждую строку
list.txt
, сохранить его как$file
и запуститьrm
на нем. В-r
гарантирует , что обратные косые читаются буквально (так что\t
соответствует\
и ,t
а не TAB). В--
гарантирует , что она также имеет дело с именами файлов , начиная с-
.Вы также можете сделать это в Perl:
Это будет читать каждое имя файла в
%k
хеш, а затем использоватьunlink
для удаления каждого из них.источник
Через питона.
Сохраните приведенный выше сценарий в файле с именем like,
script.py
а затем выполните сценарий, выполнив приведенную ниже команду на терминале.file
это входной файл, в котором хранятся пути к файлам, которые вы действительно хотите удалить.источник
Глупо, но вот один из них:
источник
Еще один способ сделать это:
Вы можете «подготовить» файл, сделав его сценарием оболочки:
Если ваши имена файлов могут иметь одинарную кавычку (
'
), вы можете использовать эту слегка расширенную версию, чтобы сначала их избежать:И вы можете запустить это, отправив по адресу
sh
:источник
Насколько я понимаю, у вас есть текстовый файл с файлами с полными путями. Есть две возможности:
В вашем списке имена файлов разделены символами новой строки, то есть каждая строка имеет полный путь к файлу. в этом случае вот простой выход:
Если в вашем списке есть одна или несколько строк имен файлов, разделенных пробелами или табуляцией, то вот упражнение:
это преобразует все пробелы в новые строки
Да, есть много способов сделать это, но это очень простой подход.
источник