-1

そのため、多数のハエで stat を呼び出し、結果をテキスト ファイルに出力する必要があります。私はこれを試しました

stat 'Dir/$file_names' -c %n,%s,%y >> meta.txt

$file_name の形式は次のとおりです。

"file1" "file2" "file3"

ただし、 stat が呼び出されたときに引用符がパスに残っているため、機能しません。

それらを削除する方法や、文字列をループする方法はありますか?

また、一部のファイル名にはスペースが含まれているため、ファイルを指定するには引用符が必要になる可能性があります

ファイル名文字列は次のコマンドで設定されます

file_name=`ssh user@server  find /attachments -type f -mtime -100 -daystart -printf '\"%f\"\ ' `
4

3 に答える 3

1

変数を展開するには、二重引用符を使用します。

stat "Dir/$file_names" -c %n,%s,%y >> meta.txt

$file_namesに複数のファイル名が含まれている場合は、for ループを使用して、区切り記号を使用する方法で変数をフォーマットできます。たとえば、次:の代わりにファイル名を区切るために使用できます。

「ファイル1」「ファイル2」「ファイル3」

代わりにこれを使用してください:

ファイル1:ファイル2:ファイル3

次に、IFS特別な変数 (「Internal Field Separator」と呼ばれ、シェルによって認識されます) を:for ループに設定して使用します。

IFS=":"
$file_names の f の場合
行う
    stat "Dir/$f" -c %n,%s,%y >> meta.txt
終わり

1 つのコマンドだけが必要な場合は、これをワンライナーにすることもできます。

IFS=":"; for f in $file_names; do stat "Dir/$f" -c %n,%s,%y >> meta.txt; 終わり

これにより、次のようにファイル名にスペースが含まれていても、すべてが正しく機能することが保証されます。

file1:スペースを含むファイル:さらに多くのスペース
于 2013-08-12T11:11:51.867 に答える