unix - удалять файлы только из каталога - PullRequest
0 голосов
/ 01 января 2012

Скажите, например, со структурой каталогов:

toplev/
      file2.txt
      file5.txt
      midlev/
            test.txt
            anotherdirec/
                         other.dat
                         myfile.txt
                         furtherdown/
                                    morefiles.txt
                         otherdirec/
                                    myfile4.txt
                                    file7.txt

Как бы вы удалили все файлы (не каталоги и не рекурсивно) из 'anotherdirec'? В этом примере будут удалены 2 файла (other.dat, myfile.txt)

Я пробовал приведенную ниже команду из каталога 'midlev', но она выдает эту ошибку (find: bad option -maxdepth find: [-H | -L] path-list predicate-list):

find anotherdirec/ -type f -maxdepth 1

Я использую SunOS 5.10.

Ответы [ 4 ]

5 голосов
/ 01 января 2012
rm anotherdirec/*

должно работать на вас.

4 голосов
/ 01 января 2012

Ответ Роба (rm anotherdirec / *), вероятно, будет работать, но он немного многословен и генерирует кучу сообщений об ошибках. Проблема в том, что вы используете версию find, которая не поддерживает опцию -maxdepth. Если вы хотите избежать сообщений об ошибках, которые выдает 'rm anotherdirec / *', вы можете просто сделать:

for i in anotherdirec/*; do test -f $i && rm $i; done

Обратите внимание, что ни одно из этих решений не будет работать, если любой из файлов содержит пробелы или другие специальные символы. Вы можете поместить двойные кавычки вокруг $ i, если это проблема.

3 голосов
/ 01 января 2012

Находка чувствительна к опциям заказа.Попробуйте это:

find anotherdirec/ -maxdepth 1 -type f -exec rm {} \;
1 голос
/ 25 июля 2016

rm toplev/midlev/anotherdirec/*, если вы хотите удалить только файлы.

rm -rf toplev/midlev/anotherdirec/*, если вы хотите удалить файлы и нижние каталоги

...