Я написал bash script, который перебирает набор папок и их подкаталогов на один уровень, удаляя все файлы, кроме одного. Я уверен, что мой код довольно неэффективен, и задавался вопросом, как лучше его улучшить. Это кажется слишком длинным и бессмысленным для достижения моих целей.
Мне требуется script to cd
в каталог, а затем удалять все, кроме нескольких файлов в подкаталогах, но оставлять только папки. Помогло бы оно использовать switch
/case
для каждого файла, который мне нужно сохранить?
В идеале я думаю, что он должен продолжать поиск дополнительных субдиров, вместо меня есть вложенные циклы, которые ищут только два уровня.
Другая проблема заключается в том, что она пропускает папки с пробелами (хотя это не проблема с томами, которые будут выполняться script).
Вот мой код:
for i in /Users/YourName/Desktop/Test/* ; do
if [ -d "$i" ]; then
cd $i
for j in "$i"/* ; do
if [ -d "$j" ]; then
cd $j
for k in $(ls *); do
if [ ! $k == "watch.log" ]; then
echo $k
rm -rf $k
fi
done
fi
done
fi
done
Спасибо!