Список файлов задается в качестве входных данных для trкоманды, которая изменяет разделитель файлов с перевода строки на нулевой байт, и xargsкоманда считывает на входе файлы, разделенные нулевыми байтами, и запускает команду rm с файлами, добавленными в качестве аргументов.
Я бы также предложил использовать rm --вместо just rm, чтобы имена файлов, которые могут начинаться с тире, не рассматривались как rmпараметры.
Артём
Это не сработало, приятель ........ tr: дополнительный операнд monu.txt' Try tr --help 'для получения дополнительной информации. rm: отсутствует операнд Попробуйте `rm --help 'для получения дополнительной информации. ........ Это все, что я могу видеть
памятник
1
Возможно, вы пропустили <перед именем файла?
Йонас Берлин
Я также немного улучшил команду xargs - добавил - по предложению @artyom и добавил -r, чтобы убедиться, что он не запускает rm, если нет файлов для удаления.
Йонас Берлин
5
Приведенный выше ответ хорош тем, что он обрабатывает имена файлов с пробелами и "странными символами". Но самый простой способ, если имена файлов нормальные, это просто (предупреждение, башизм!):
Ответы:
Если у вас есть один файл на строку, один из способов сделать это:
Список файлов задается в качестве входных данных для
tr
команды, которая изменяет разделитель файлов с перевода строки на нулевой байт, иxargs
команда считывает на входе файлы, разделенные нулевыми байтами, и запускает команду rm с файлами, добавленными в качестве аргументов.источник
rm --
вместо justrm
, чтобы имена файлов, которые могут начинаться с тире, не рассматривались какrm
параметры.monu.txt' Try
tr --help 'для получения дополнительной информации. rm: отсутствует операнд Попробуйте `rm --help 'для получения дополнительной информации. ........ Это все, что я могу видетьПриведенный выше ответ хорош тем, что он обрабатывает имена файлов с пробелами и "странными символами". Но самый простой способ, если имена файлов нормальные, это просто (предупреждение, башизм!):
Для обычной оболочки:
источник