Многие инструменты Unix хрупки (или, по крайней мере, сложно использовать правильно) при наличии имен файлов, содержащих пробелы и табуляции, или, что еще хуже, переводы строк, поэтому, когда у вас есть выбор, вам следует избегать этих символов в именах файлов.
Однако если вы хотите удалить все файлы в текущем каталоге (и все подкаталоги) с пробелом в имени, будет работать следующее.
find . -name '* *' -print0 | xargs -0 rm -f
Опция -print0
указывает find использовать байт NUL (\0) в качестве разделителя между именами файлов вместо NL (\n). И наоборот, -0
указывает xargs использовать NUL в качестве разделителя строк вместо NL. При необходимости измените аргумент шаблона на параметр -name
, чтобы он соответствовал файлам, которые вы хотите удалить.
Это может быть немного сложнее , чтобы предотвратить find
от рекурсии в подкаталоги (хотя проверить -maxdepth
аргумента), так что если вы только хотите , чтобы повлиять на файлы в текущем каталоге , вы можете подойти к проблеме по- разному.
В целом, я настоятельно рекомендую быстро освоить find
и xargs
. Индивидуально, и особенно когда они объединены в цепочки, как показано выше, они создают чрезвычайно гибкий набор инструментов для массовых операций с файлами.