Мне недавно нужно было удалить все файлы в ~ 40 каталогах, которые были в родительском каталоге, без удаления самих каталогов. Я закончил это вручную, но есть ли более эффективный способ сделать это? То есть, есть ли команда linux, которая может это сделать?
Для более четкого представления о том, что я имею в виду:
HomeDirectoryName -> subdirectoryName -> 4 файла информации о симуляции
У меня был вышеуказанный путь, за исключением 40 подкаталогов, каждый из которых имеет 4 файла моделирования. Мне нужно было удалить все файлы информации моделирования без удаления каталогов подкаталога.
Это может быть невозможно, поскольку я искал везде около часа, прежде чем, наконец, решил сделать это вручную.
из родительского каталога запустите
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.)