2014-01-18 2 views
2

У меня есть проблема с удалением файлов, когда я их нахожу. Задача: необходимо найти файлы с пробелами и удалить ихLinux не может удалять файлы

мою попытку :)

rm $(find -L /root | grep -i ' ') 

Но у меня есть ошибки:

rm: cannot remove `/root/test': No such file or directory 
rm: cannot remove `2.txt': No such file or directory 
rm: cannot remove `/root/test': No such file or directory 
rm: cannot remove `3.txt': No such file or directory 
rm: cannot remove `/root/test': No such file or directory 
rm: cannot remove `1.txt': No such file or directory 

Пожалуйста, помогите решить эту проблему.

Спасибо.

ответ

1

Почему бы не так:

find /root -type f -name '* *' -exec rm -f {} ';' 
1

Вы можете указать -exec аргумент команды поиска, чтобы выполнить команду с результирующего файла в качестве аргумента. В вашем случае следующая команда будет делать то, что вы хотите.

-type f будет печатать только файлы. Если вы хотите только каталоги, используйте -type d. Если вы не используете ни одно из них, оно будет печатать как файлы, так и каталоги.

Поскольку это операция удаления, сначала запустите команду и посмотрите, печатает ли она нужные файлы.

find /root -type f -name '* *' 

Тогда, если все в порядке, запустите это, чтобы удалить их.

find /root -type f -name '* *' -exec rm {} \; 
3

Я предполагаю, что вы находите файлы с пробелами или кавычками. Попробуйте это:

find /test/path -print0 | xargs -0 rm 

Что это будет сделать, это отправить имена файлов на стандартный вывод разделяйте NULL байт, которые xargs будут принимать в качестве разделителей. Это позволяет пробелам, кавычкам и другим подобным развлечениям на выходе.

Теперь, если вы удаляете каталоги, rm не собирается работать. Таким образом, вы можете добавить -type f к вышесказанному.

Обратите внимание, что в gnu find есть оператор -delete, который удаляет файлы для вас, но вы хотите знать почему. Следовательно, более короткий путь будет:

find /test/path -delete 

Это будет иметь дело с каталогами тоже, если вы не добавите -type f. Он также справится с удалением самых глубоких вещей (подумайте, зачем это нужно).

Смежные вопросы