2013-08-25 3 views
1

Как я могу удалить все .txt файлы, присутствующие в нескольких каталогахУдалить файлы для многих каталогов - Linux

Dir1 > 
    Dir11/123.txt 
    Dir12/456.txt 
    Dir13/test.txt 
    Dir14/manifest.txt 

В моем примере я хочу, чтобы выполнить команду Удалить из Dir1.

Я знаю команду linux rm, но я не знаю, как это сделать для моего дела.

PS .: Я использую ubuntu.

ответ

1

Мы не будем вводить вспомогательные каталоги, поэтому вам не нужно использовать find; все на одном уровне. Я думаю, это именно то, что вы ищете: rm */*.txt

Перед тем как запустите это, вы можете попробовать echo */*.txt, чтобы узнать, будут ли удалены правильные файлы.

Использование находки была бы полезно, если вы хотите найти вложенные папки вложенных папок и т.д.

Там нет Dir1 в текущей папке, так что не делать find Dir1 .... Если запустить находку из строки выше, это будет работать:

find . -type f -name "*.txt" -delete

3

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

find Dir1 -type f -name "*.txt" -delete 

если вы используете , вы можете сделать тоже :

(shopt -s globstar; rm Dir1/**/*.txt) 
+0

Добавлено решение 'bash' и некоторые пояснения –

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