Исключить определенные файлы в ls

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

Когда я выполняю следующую команду, я получаю все файлы, каждый из которых находится в одной строке:

$ ls -1file1file2file3temp

Я хотел бы запустить эту команду таким образом, чтобы она показывала

$ ls -1 <insert magic here> tempfile1file2file3
ls -I <filename>

-I = Игнорировать имя файла, т.е. не указывать указанный файл в списке.

Чтобы игнорировать более одного файла, добавьте - Я перед каждым именем файла.

ls -I file1 -I file2

Чтобы игнорировать файлы по их расширениям имен, выполните, например, следующие действия.

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

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

Но ls -I *.csv -I *.txt не работает и вместо этого возвращает текстовые файлы.

-- игнорировать проделал этот трюк за меня. Это то, что мне было нужно, и я работал.

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

Это приведет к перечислению файлов из папки журнала, где будут исключены старые журналы резервных копий.

<код>ls --ignore={"*.jpg","*.png","*.svg"}

Я думаю, что это дает результат, который вы ищете:

ls -1 !(temp)

Вероятно, вам нужно shopt -s extglob чтобы это сработало
(У меня он включен, так что, наверное, когда-то в далеком прошлом я счел его полезным и включил).

Я думаю, вы также могли бы использовать grep для фильтрации выходных данных:

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

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