選択したファイルを除いて、ディレクトリ内のすべてのファイルをcat
できるように特定の構文がある場合。たとえば、いくつかのファイルがある場合を除いて、ファイルごとに約3行または4行の、いくつかの行を含む最大1200のテキストファイルがあるとします。
readme.md
contrib.rst
licence.txt
長いです。上記の3つ(または可能であればそれ以上)のファイルを除くすべてのファイルの内容を表示したいと思います。
次のコマンドを試しました。
cat !{readme.md,contrib.rst,licence.txt}*.*
どこかでcat
の使用法を次のように見たからです。
cat [!t][!m][!p]*.sh
それ以来、{a,b}
は、bashスクリプトのセットを意味し、それが機能することを否定します。もちろん私は間違っていました。
Bashの拡張パターンマッチング機能でこれを試してください。
shopt -s extglob
cat !(readme.md|contrib.rst|licence.txt)
これをbashで試してください:
GLOBIGNORE="readme.md:contrib.rst:licence.txt"
cat *
unset GLOBIGNORE
すでに何を試しましたか?
スキップしたいのは常に同じファイルですか。
その場合、コマンドでそれらをハードコーディングできます。例えば。何かのようなものfind ! -name readme.md -o ! -name contrib.rst -o ! -name licence.txt -exec cat {} \+
ここで、事前にファイル名を知らずに4行を超えるすべてのファイルをスキップするものが必要な場合、ソリューションは明らかに複雑になります。その場合は投稿を編集してください。
現在のシェル設定を変更せずにサブシェルで各Cyrusプロポーザルを実行することが可能です
(GLOBIGNORE="readme.md:contrib.rst:licence.txt" ; cat *)
と同様
(shopt -s extglob; cat !(readme.md|contrib.rst|licence.txt))