Я недавно должен был удалить все файлы в рамках ~40 каталогов, которые были в рамках родительского каталога, не удаляя сами каталоги. Я закончил тем вручную, что делал так, но являюсь там более эффективным способом сделать это? Т.е. есть ли команда Linux, которая может сделать это?
Для более четкого изображения того, что я имею в виду:
HomeDirectoryName-> subdirectoryName-> 4 информационных файла моделирования
У меня был вышеупомянутый путь, кроме существует 40 подкаталогов, каждый из которых имеют его 4 файла моделирования. Я должен был удалить все информационные файлы моделирования, не удаляя "subdirectoryName" каталоги.
Это не может быть возможно, когда я искал везде приблизительно в течение часа перед окончательным решением сделать это вручную.
Это очень просто с эти find
, команда - просто использует -type f
, чтобы найти, что только файлы и не каталоги
find /path/to/parent/directory -type f -delete
По умолчанию, find
рекурсивно вызывает в подкаталоги, так найдет все файлы в дереве от этой точки вниз.
из родительского каталога работает
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]'
Из родительского каталога
rm */*
удалит 160 информационных файлов моделирования, не удаляя 40 каталогов, которые содержат файлы.
(Это не имеет значения в этом случае, но может быть полезно в будущем знать, что rm
никогда не будет удалять каталог, если Вы явно не спрашиваете это к с с -r
флаг.)