ファイルの文字列をファイル名に追加

ファイルの文字列をファイル名に追加

最初の行にある文字列を含めるようにファイル名を変更する必要があります。

前任者:

[acoder@test]# head -1 FILE001.DAT
XYZ123

私の推測は次のとおりです。

for file in /some/dir/*.DAT
do
        CODE=`head -1 "$file"`
        echo "${file%.DAT}.$CODE.DAT"
done

出力:

.DATa/some/dir/FILE001.XYZ123

以下を見ることができると予想されます。

/some/dir/FILE001.XYZ123.DAT

何が間違っていますか?

答え1

ファイルがWindowsシステム上のファイルの場合は、末尾にキャリッジリターン文字がある可能性があります。

CODE次のように変数に割り当てることで、この問題を解決できます。

CODE="$( head -n 1 "$file" | tr -d '\r' )"

関連情報