2

У меня есть список каталогов в текстовом файле, и каждый из них должен быть удален. Как я могу прочитать в этом списке в команду (rm -r или rmdir)?

2 ответа2

4

"Более правильное" решение будет следующим:

xargs -I{} rm -r {} < files

Это вызывает rm -r , где {} заменяется именем файла.


Зачем? Передача файлов с пробелами в xargs приведет к неверным аргументам. Допустим, ваш список файлов выглядит так:

/path/to/file 1
/path/to/file_2

Затем xargs rm -r < list.txt попытается удалить /path/to/file , 1 и /path/to/file_2 . Определенно не то, что вы хотите. Всегда помните о пробелах в путях при передаче из команд в UNIX / Linux и обратно.

1

при условии, что у вас есть пути с пробелами в файле list.txt - один путь на строку. Тогда следующий способ вызова xargs сохранит пробелы:

cat list.txt | xargs -d \\n rm -r

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .