Linux +スペースを含むファイルを無視(フィルタリング)する方法

Linux +スペースを含むファイルを無視(フィルタリング)する方法

場合によっては、次のように複数の名前と各名前の間のスペースでファイル名が作成されることがあります。

   $ 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 ' '

名前にスペースを含むファイルは表示されません。

(例では代わりに使用しましたが、fgrepHauke 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

関連情報