2014-01-13 2 views
0

Я хочу, чтобы удалить все прямые подкаталоги рабочего каталога, который содержит файл core.properties.unloaded и не содержит файла core.properties. Я знаю, что это должно быть сочетание find и rm. Но как сочетать?Как удалить все вложенные папки, которые содержат определенный файл и не содержат другой файл

Благодарим за помощь!

ответ

1

Начиная как так

$ find . -name "*" 
. 
./dir1 
./dir1/core.properties.unloaded 
./dir2 
./dir2/core.properties 
./dir3 
./dir3/core.properties 
./dir3/core.properties.unloaded 

Я управлял этим

for i in `find -mindepth 2 -maxdepth 2 -name "core.properties.unloaded" | awk -F'/' '{print $2}'` 
do 
    if [ ! -f "$i"/core.properties ]; then 
    rm -rf "$i" 
    fi 
done 

И тогда команда находка показывает, что только dir1 был удален (две другие каталоги содержат core.properties или не содержат core.properties.unloaded) -

$ find . -name "*" 

. ./dir2 ./dir2/core.properties ./dir3 ./dir3/core.properties ./dir3/core.properties.unloaded

+0

Works! Большой! Спасибо. – heinob

Смежные вопросы