15

Unixの「file」コマンドには、ファイル名の後にヌル文字を出力する-0オプションがあります。これは、「cut」で使用するのに適していると思われます。

差出人man file

-0, --print0
         Output a null character ‘\0’ after the end of the filename. Nice
         to cut(1) the output. This does not affect the separator which is
         still printed.

(私のLinuxでは、「-F」区切り文字は印刷されないことに注意してください。これは私にとってより理にかなっています。)

'cut'を使用して'file'の出力からファイル名を抽出するにはどうすればよいですか?

これが私がやりたいことです:

find . "*" -type f | file -n0iNf - | cut -d<null> -f1

<null>ヌル文字はどこにありますか。

それが私がやろうとしていることです。私がやりたいのは、特定のMIMEタイプを持つディレクトリツリーからすべてのファイル名を取得することです。grepを使用しています(図には示されていません)。

すべての有効なファイル名を処理し、名前にコロンが含まれるファイル名にとらわれないようにします。したがって、NULは優れています。

カットされていないソリューションでも問題ないと思いますが、単純なアイデアをあきらめるのは嫌です。

4

2 に答える 2

21

空の区切り文字を指定するだけです。

cut -d '' -f1

(注:-dとの間のスペース''は重要です。そのため、-dと空の文字列は別々の引数として渡されます。を書く-d''と、それはちょうど-d、として渡され、区切り文字としてcut使用しようとしていると見なされます。-f1、「区切り文字は1文字である必要があります」というエラーメッセージが表示されます。)

于 2012-03-24T01:47:41.560 に答える
0

これはgnuawkで機能します。

awk'BEGIN {FS = "\ x00"} {print $ 1}'

于 2022-02-04T17:09:30.030 に答える