web-dev-qa-db-ja.com

シェルスクリプトのファイルの最初の行としてファイル名を追加します

こんにちは、よろしくお願いします。

ファイルを取得し、ファイル名をファイルの最初の行として挿入してから、別の名前に移動する必要があります。これがしわです。最も古いファイルをORIGFILE_YYYYMMDD.TXTの形式で取得し、NEWFILE.TXTとして保存する必要があります。この例では、ファイル名がORIGFILE_20151117.TXTであるとしましょう。

  1. 最も古いファイルを取得します(ls -tr ORIGFILE*.txt
  2. ファイルの最初の行としてORIGFILE_20151117.TXTを追加します
  3. ORIGFILE_20151117.TXTの名前をNEWFILE.TXTに変更/移動
2
user3191402

さて、これを簡単なステップに分解しましょう:

#!/bin/bash

# First, let's get that file's name:
FILE=$(ls -rt ORIGFILE*.txt | tail -n1)
if [[ 0 -ne $? ]]; then
    echo "Unable to locate matching file.  Aborting." 1>&2
    exit 1
fi

# Now, create a new file containing the file's name:
echo "$FILE" > NEWFILE.TXT

# And append the contents of the old file into the new:
cat "$FILE" >> NEWFILE.TXT

# Finally, get rid of the old file: (uncomment if you're sure)
# rm "$FILE"
1
DopeGhoti

これでうまくいきます:

f=$(ls -1tr ORIGFILE*.txt | head -1); echo $f | cat - $f > NEWFILE.txt && rm $f
1
Kira