Это зависит от того, как вы на самом деле обрабатываете список файлов (который вы еще не показали). Предполагая, что они есть по одному на строку в файле:
:: cat list
thishasnospaces
but this does
, тогда даже что-то подобное не будет работать, если у них есть пробелы:
:: for fspec in $(cat list) ; do echo "rm -f \"${fspec}\"" ; done
rm -rf "thishasnospaces"
rm -rf "but"
rm -rf "this"
rm -rf "does"
Это потому, что это обрабатывает все пробелы как идентичные. Тем не менее, вы можете сделать это с while
l oop:
:: cat list | while read ; do echo "rm -f \"$REPLY\""; done
rm -f "thishasnospaces"
rm -f "but this does"
Вы увидите, что сохраняется один на строку. Просто удалите эхо, когда будете счастливы, оно сработает.
:: cat list | while read ; do rm -f "$REPLY"; done
Но имейте в виду, что все это может быть ненужным. Команда find
уже имеет возможность удалять найденные файлы, используя опцию -delete
. Если вы можете использовать это, будет гораздо меньше возиться с пробелами в именах файлов.