Удалите файлы в рамках всех каталогов в каталоге

Я недавно должен был удалить все файлы в рамках ~40 каталогов, которые были в рамках родительского каталога, не удаляя сами каталоги. Я закончил тем вручную, что делал так, но являюсь там более эффективным способом сделать это? Т.е. есть ли команда Linux, которая может сделать это?

Для более четкого изображения того, что я имею в виду:

HomeDirectoryName-> subdirectoryName-> 4 информационных файла моделирования

У меня был вышеупомянутый путь, кроме существует 40 подкаталогов, каждый из которых имеют его 4 файла моделирования. Я должен был удалить все информационные файлы моделирования, не удаляя "subdirectoryName" каталоги.

Это не может быть возможно, когда я искал везде приблизительно в течение часа перед окончательным решением сделать это вручную.

2
задан 27 October 2016 в 01:15

3 ответа

Это очень просто с эти find, команда - просто использует -type f, чтобы найти, что только файлы и не каталоги

find /path/to/parent/directory -type f -delete

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

4
ответ дан 2 December 2019 в 01:36

из родительского каталога работает

find -type f -exec rm {} \;

для удаления каждого файла индивидуально, или альтернативно

find -type f -exec rm {} +

для постановки в очередь нескольких файлов к rm за один раз.

Для энтузиастов Python, вот другое решение:

 python -c 'import os;[os.unlink(os.path.join(r,f)) for r,d,fs in os.walk(".") for f in fs]'
3
ответ дан 2 December 2019 в 01:36

Из родительского каталога

rm */*

удалит 160 информационных файлов моделирования, не удаляя 40 каталогов, которые содержат файлы.

(Это не имеет значения в этом случае, но может быть полезно в будущем знать, что rm никогда не будет удалять каталог, если Вы явно не спрашиваете это к с с -r флаг.)

0
ответ дан 2 December 2019 в 01:36

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

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