Відповіді:
ls -I <filename>
-I = Ігнорувати ім'я файлу, тобто не перераховувати вказаний файл.
Щоб ігнорувати більше одного файлу, додайте -I перед кожним іменем файлу.
ls -I file1 -I file2
Наприклад, щоб ігнорувати файли за розширеннями імен, виконайте такі дії, наприклад.
ls -I "*.jpg" -I "*.svg"
Для мене, якщо я використовую-я один раз, він працює, але якщо я використовую два рази, це не робить. напр .:
ls -I *.csv
твори.
Але
ls -I *.csv -I *.txt
він не працює і натомість повертає файли txt.
- Сінько зробив для мене трюк. Це те, що мені було потрібно і працював.
ls -lhrt --ignore="*.gz" --ignore="*.1"
Це перерахує мені файли з папки журналу, де він виключає старі журнали резервного копіювання.
ls -I '*.txt'
. Причина, коли вона не працює без котирування, - це розширення оболонки, тобто ви говорите оболонці перелічити всі файли CSV, а не виключати їх. Що насправді відбувається, це те, що він ігнорує перші .csv та .1 файли після розширення, але перераховує залишки
ls --ignore={"*.jpg","*.png","*.svg"}
--ignore
варіанти. Ви також могли скористатися--ignore="*."{jpg,png,svg}
Я думаю, що це дає результат, який ви шукаєте:
ls -1 !(temp)
Мабуть , вам це потрібно shopt -s extglob
для роботи
(я це ввімкнув, тому, певно, певний час у далекому минулому я вважав це корисним і дозволив).
Я думаю, ви також можете використовувати grep для фільтрації виводу:
ls -1 | grep -v '^temp$'
Використання труби та фільтрів забезпечує набагато більшу гнучкість та навички, що передаються іншим командам / ситуаціям, хоча це може бути не цікаво для цього конкретного випадку.
--ignore
ви можете поширити це на глобальні візерунки, наприклад,ls --ignore="file?"
абоls --ignore="file*"