виключити певні файли в лс


61

Я хотів би запустити ls та виключити певні файли у висновку.

Коли я запускаю таку команду, я отримую всі файли з кожним у одному рядку:

$ ls -1
file1
file2
file3
temp

Я хотів би виконати цю команду таким чином, щоб вона показала

$ ls -1 <insert magic here> temp
file1
file2
file3

Відповіді:


82
ls -I <filename>

-I = Ігнорувати ім'я файлу, тобто не перераховувати вказаний файл.

Щоб ігнорувати більше одного файлу, додайте -I перед кожним іменем файлу.

ls -I file1 -I file2

Наприклад, щоб ігнорувати файли за розширеннями імен, виконайте такі дії, наприклад.

ls -I "*.jpg" -I "*.svg"

4
Якщо ви використовуєте параметр "довга форма", --ignoreви можете поширити це на глобальні візерунки, наприклад, ls --ignore="file?"абоls --ignore="file*"
steeldriver

3
ви можете використовувати глобусні візерунки і з короткою формою, цитуючи шаблони
багатослівний

18

Для мене, якщо я використовую-я один раз, він працює, але якщо я використовую два рази, це не робить. напр .: ls -I *.csvтвори.

Але ls -I *.csv -I *.txtвін не працює і натомість повертає файли txt.

- Сінько зробив для мене трюк. Це те, що мені було потрібно і працював.

ls -lhrt --ignore="*.gz" --ignore="*.1"

Це перерахує мені файли з папки журналу, де він виключає старі журнали резервного копіювання.


3
цитуючи * .csv у першій формі роботи, напр., ls -I '*.txt'. Причина, коли вона не працює без котирування, - це розширення оболонки, тобто ви говорите оболонці перелічити всі файли CSV, а не виключати їх. Що насправді відбувається, це те, що він ігнорує перші .csv та .1 файли після розширення, але перераховує залишки
докладно

Подвійне цитування працювало і для мене. Дякую @verboze
користувач38537

це простіше. Дякую.
Філіп Дельтейль

6

ls --ignore={"*.jpg","*.png","*.svg"}


4
Це просто за допомогою розширення дужок bash, щоб отримати три --ignoreваріанти. Ви також могли скористатися--ignore="*."{jpg,png,svg}
muru

1

Я думаю, що це дає результат, який ви шукаєте:

ls -1 !(temp)

Мабуть , вам це потрібно shopt -s extglobдля роботи
(я це ввімкнув, тому, певно, певний час у далекому минулому я вважав це корисним і дозволив).

Я думаю, ви також можете використовувати grep для фільтрації виводу:

ls -1 | grep -v '^temp$'

Використання труби та фільтрів забезпечує набагато більшу гнучкість та навички, що передаються іншим командам / ситуаціям, хоча це може бути не цікаво для цього конкретного випадку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.