2016-11-07 3 views
1

Это моя командная строка:Команда находкой Linux не может удалять файлы

find /home/ -depth -type f -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" -delete 

моего разрешения корень.

Когда я запустил эту командную строку с -delete, я получаю список файлов. Но я не могу удалить файлы с помощью этой команды.

Что-то не так?

+0

Флаг '-delete' доступен не во всех версиях' find'. – SLePort

ответ

0

Вы можете использовать:

find /home/ -depth -type f -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" -exec rm -f {} \; 
1

-delete действие доступно только в некоторых версиях find (например, GNU find). Он был представлен ОС BSD. От GNU findutils page:

Действие «-delete» было представлено семейством операционных систем BSD.

Вы можете использовать более портативный -exec действия:

find /home/ -depth -type f \(-iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \) -exec rm -f {} \; 

Edit:

Обратите внимание, что применять -delete действия на всех -iname выражений, необходимо сгруппировать их с использованием спаслись скобка:

find /home/ -depth -type f \(-iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \) -delete 
+0

Я попробовал, и ничего не изменилось. Может быть, строка возврата имеет проблему или что-то еще. Когда я запустил comman: find/home/-depth -type f -iname "* php.jpg *" -delete. Он работает, но когда я запускаю команду с несколькими именами. Это не работает. – Diego

+0

См. Мое редактирование группировки выражений '-iname'. – SLePort

2

вы можете попробовать это;

find /home/ -type f \(-iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \) -delete 

Вам необходимо окружить несколько имен скобками, как указано выше;

«Рекомендуется, чтобы вы заключите расширения файлов в кронштейне, , а также использовать \ (обратный слэш) бежать характер, как в команде.»

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