Только удалите файлы, но не папки с комнатой

У меня есть каталог как это:

<folder1>
<folder2>
<folder3>
file1
file2
file3

То, какова команда комнаты как этот, удаляет только file1, file2, file3, но оставляет folder1, folder2 и folder3 и их содержание нетронутый?

3
задан 25 August 2015 в 12:24

2 ответа

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

rm *

Это - опасная команда. , Если Вы забываете, где Вы, команда как этот может вытереть важный $HOME файлы, вытереть загрузку фотографий, отменить Рождество, и т.д., и т.д., и т.д. Удостоверьтесь, что Вы знаете то, что * выбирает перед выполнением его. echo * хороший способ протестировать расширение.

А нормальный человек, которому предоставляют file1 file2 file3, мог бы работать rm file* или rm file{1..3}, чтобы использовать часть кода расширения Bash и не поймать любых отставших, о которых Вы не думали в переходной помехе.

<час>

Для удаления каталогов необходимо указать также:

  • -d для удаления пустых каталогов, или
  • -r для рекурсивного удаления файлов и их каталогов.
7
ответ дан 1 December 2019 в 13:12

Как @Oli сказал в его ответ

, комната не удалит каталоги по умолчанию.

<час>

, Но Вы могли также использовать find

find . -maxdepth 1 -type f -exec rm "{}" \;

или с шаблоном поиска

find . -maxdepth 1 -type f -name "a*" -exec rm "{}" \;
<час>

Пример

% tree
.
├── a
├── b
├── bar
│   ├── a
│   └── b
└── foo
    ├── a
    └── b

%  find . -maxdepth 1 -type f -exec rm "{}" \;

% tree
.
├── bar
│   ├── a
│   └── b
└── foo
    ├── a
    └── b

или с шаблоном поиска

% find . -maxdepth 1 -type f -name "a*" -exec rm "{}" \;

% tree                                                  
.
├── b
├── bar
│   ├── a
│   └── b
└── foo
    ├── a
    └── b
2
ответ дан 1 December 2019 в 13:12

Другие вопросы по тегам:

Похожие вопросы: