#bash #find
#bash #Найти
Вопрос:
У меня есть папка с более чем 20 тысячами изображений, и большинство файловых менеджеров с графическим интерфейсом (например, dolphin) не могут управлять таким объемом данных.
Поэтому я решил использовать bash вместо этого. Моя проблема заключается в следующем:
- большинство
*.IMG
*.LBL
файлов — это файлы или - Меня не интересуют эти файлы. Я ищу другие
- с
find . -type f -not -name "*.LBL"
помощью я могу видеть все файлы вместо*.LBL
- с
find . -type f -not -name "*.IMG"
помощью я могу видеть все файлы вместо*.IMG
- оба не очень полезны, поскольку они все еще заполняют мой терминал
- либо объединение обоих, похоже, не работает:
find . -type f -not -name "*.LBL" -o -not -name "*.IMG"
Каков правильный способ просмотра файлов внутри папки, исключая несколько файловых буферов?
Ответ №1:
Групповые условия, я думаю, -o -not работает не так, как ожидалось. Попробуйте это:
find . -type f -not ( -name "*.LBL" -o -name "*.IMG" )
Ответ №2:
Вы можете использовать расширенное сопоставление шаблонов bash (возможно, его придется включить в скрипте с shopt -s extglob
помощью ; обычно включен по умолчанию в интерактивной оболочке):
printf "%sn" !(*.LBL|*.IMG)
Комментарии:
1. также работало, но поскольку
find
это намного быстрее, чем ваше решение (а также немного ближе к моему вопросу) Я принимаю другой ответ. Но приятно, что что-то подобное тоже работает.2. Если в этой задаче так важна скорость, вы можете попробовать Rust find как fd
3. Я удивлен, что они не совпадают. Возможно, из-за сортировки имен файлов, выполняемой глобусом.
4. Скорость не так важна, но она была заметна между обоими решениями.