スペースを含むファイル名をソートしてファイルをリンクする方法は?

スペースを含むファイル名をソートしてファイルをリンクする方法は?

スペースを含むファイル名の処理に問題があります。ファイル名にスペースを含むファイルをリンクしたいです。また、ファイル名を数字でソートしたいと思います。明らかに、次は失敗します。

cat $(ls *.sql | sort -n)

以降はにfoo bar.sql2つの引数として渡されますcat。ここで一般的なアプローチは何ですか?

ベストアンサー1

ここでは必要ありませんls。 globsを展開してディレクトリの内容を一覧表示するシェルです*.sql

GNUまたはFreeBSDシステムの場合:

printf '%s\0' *.sql | sort -nz | xargs -r0 cat --

(with\0の代わりに改行文字を含むファイル名にも機能します)。\n-z/-0

数値ソートでは、-n数値がファイル名の先頭にあると仮定します。

または、次の場合zsh

cat ./*.sql(.n)

(glob修飾子は数値ソートを有効にするために使用されます(すべてのファイル名に同じプレフィックス(たとえば、、)が含まれてnいる場合は数字が開始でない場合でも機能します。)、通常のファイルのみを含めるように追加しました。以下を追加してください。file12.sqlfile2.sql.D.foo.sql

おすすめ記事