Скажем, я хотел бы удалить каждый файл в каталоге, который не является .png файлом. Я только хотел бы сохранить изображения и удалить все остальное.
Что-то вроде этого, которое, очевидно, не работает:
for file not in *.png;
do
rm $file
done
Как я пошел бы об этом? Я также хотел бы знать, как сделать это с пользовательскими строками в именах файлов и не просто расширениях.
В ударе с extglob
установите Вас, может использовать отрицательное соответствие:
shopt -s extglob # often a default, could be already set
rm *.!(png)
rm !(*keep*|*save*) # everything except files with "keep" or "save" in their name
Посмотрите здесь для окровавленных деталей.
Это было бы эквивалентным использованием find
и отрицание опции соответствия. Я настоятельно рекомендую протестировать результат без -delete
сначала.
find . -maxdepth 1 -type f -not -name "*.png" -delete