Обычно для удаления файлов с пробелами в их имени вам нужно будет запускать:
$ rm "file name"
, но если я хочу удалить несколько файлов, например:
$ find . -name "*.txt" | xargs rm
не удаляет файлы с пробелами в них.
Кстати, если вы использовали что-то другое, кроме find, вы можете использовать tr для замены строк новой строки пустым байтом.
Например. следующий один лайнер удаляет 10 последних измененных файлов в каталоге, даже если они имеют пробелы в своих именах.
ls -tp | grep -v / | head -n 10 | tr "\n" "\0" | xargs -0 rm
Команда xargs использует вкладки, пробелы и новые строки как разделители по умолчанию. Вы можете сказать только, чтобы использовать символы новой строки ('\ n') с опцией -d:
find . -name "*.txt" | xargs -d '\n' rm
Ответ на источник SO.