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