場合によっては、次のように複数の名前と各名前の間のスペースでファイル名が作成されることがあります。
$ touch "A B C"
$ ls
A B C <-- one file but has three words !
file1
file2
file3
実際に複数の名前で生成された「ABC」ファイルを無視(フィルタリング)するにはどうすればよいですか?
期待される出力
$ ls <filter>
file1
file2
file3
答え1
以下を行う場合:
ls | grep -F -v ' '
名前にスペースを含むファイルは表示されません。
(例では代わりに使用しましたが、fgrep
Hauke Lagingが指摘したようにgrep -F
廃止)
答え2
GNU lsの使用(つまり、組み込みLinuxではない場合):
ls -I '* *'
名前にスペースが含まれているファイルをスキップする理由はあまりありません。file_names=$(ls)
スクリプトにまたは同じものがあり、これを行う場合for f in $(ls)
lsの出力を解析しないでください。、問題がなくなることがあります。
答え3
KSHの拡張globを使用すると、glob拡張子でファイル名をフィルタリングできます。
ls -d -- !(A B C)
答え4
おそらくこれも役に立ちます:
ls -l --quoting-style=literal:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 A B C
ls -l --quoting-style=locale:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 „A B C“
ls -l --quoting-style=shell:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 'A B C'
ls -l --quoting-style=shell-always:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 'A B C'
ls -l --quoting-style=c:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 "A B C"
ls -l --quoting-style=escape:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 A\ B\ C