У меня есть несколько файлов в моем рабочем каталоге, и я хочу напечатать все текстовые файлы, проблема в моем WD также является каталогом. Это означает, что, когда я типа:Bash: Различать файлы и каталоги с помощью подстановочных знаков
cat *
Выход:
9 Tom Grapes 28
10 Ben Lemon 21
11 Paul Lime 37
Next cool file
cat: yang: Is a directory
cat: ying: Is a directory
Я хочу, чтобы удалить эти 'ошибки-сообщения', так что я пробовал:
cat *[!/]
Но это просто возвращается:
cat: '*[!/]': No such file or directory
Но, наоборот, ound:
cat */
печатает только:
cat: yang: Is a directory
cat: ying: Is a directory
Означает ли это все, даже файлы заканчиваются косой чертой? Если да, есть ли способ различать файлы и каталоги? Если нет, то почему эта дикая карта не работает?
PS: Я использую Linux
Примечание сторону: Вы используете Баш, но если вы свободны в выборе оболочки , вы можете использовать Zsh.Несколько проблем, которые трудно решить в bash, легки (хотя иногда выглядят немного загадочными) в Zsh. В вашем случае команда Zsh будет 'cat * (^ /)'. Выражение в скобках говорит «нет каталогов». Как и bash, это даст ошибку, если нет простых файлов. Если вы хотите, чтобы этот кот в этом случае просто ничего не писал, вы бы сделали 'cat * (N^/)/dev/null'. * N * означает: замените шаблон glob пустой строкой, если файлы не совпадают. – user1934428