ディレクトリ内のすべてのファイル(各ファイルには1つの列があります)を複数の列を持つ単一のファイルにマージしたいと思います。ただし、最後の変更時刻順にファイルを貼り付ける必要があります。つまり、新しいファイルの最初の列は最も古いファイルの列であり、最後の列は最新のファイルの列になります。
この年代を反映するために元のファイルの名前を変更することはできません。私はコマンドを使用しましたこの質問に質問して答えるしかし、「*」はファイルの時間ソートには適していないため、私の要件を満たしていません。
paste * | column -s $'\t' -t > output.txt
ベストアンサー1
最後の変更時刻に基づいてファイル名をソートするには:
stat -c '%Y %n' * | sort -n | cut -d " " -f 2-
改行文字を含むファイル名は処理されません。
だから:
# read the sorted filenames into an array
mapfile -t files < <(stat -c '%Y %n' * | sort -n | cut -d " " -f 2-)
# then paste the files together
paste "${files[@]}" | ...