Я хотел бы выполнить ls и исключить определенные файлы в выводе.
Когда я выполняю следующую команду, я получаю все файлы с каждым на одной строке:
$ ls -1
file1
file2
file3
temp
Я хотел бы выполнить эту команду способом, таким образом, она показывает
$ ls -1 <insert magic here> temp
file1
file2
file3
ls -I <filename>
-I = Игнорируют имя файла, т.е. не перечисляют указанный файл.
Для игнорирования больше чем одного файла добавляют -I перед каждым именем файла.
ls -I file1 -I file2
Для игнорирования файлов их расширениями имени делают следующее, например.
ls -I "*.jpg" -I "*.svg"
Для меня, если я использую-I однажды, он работает, но если я использую дважды, он не делает. например: ls -I *.csv
работы.
, Но ls -I *.csv -I *.txt
не работает и возвращает txt файлы вместо этого.
- игнорируют , добился цели для меня. Это - то, в чем я нуждался и работал.
ls -lhrt --ignore="*.gz" --ignore="*.1"
, Который перечислит меня файлы от папки журнала, где она исключает старые журналы резервного копирования.
ls --ignore={"*.jpg","*.png","*.svg"}
Я думаю, что это производит вывод, который Вы ищете:
ls -1 !(temp)
По-видимому, Вам нужно shopt -s extglob
чтобы это работал
(Мне включили его, таким образом, я предполагаю некоторое время в удаленном прошлом, я нашел это полезным и включил его).
Я предполагаю, что Вы могли также использовать grep для фильтрации вывода:
ls -1 | grep -v '^temp$'
Используя канал и фильтры обеспечивает намного больше гибкости и навыков, которые передаваемы к другим командам/ситуациям, хотя Вы не могли бы интересоваться этим для этого конкретного случая.