次のファイルを含むディレクトリがあるとします。
one.txt, one.txt.tmp1, one.txt.tmp2, two.txt, two.txt.tmp1, two.txt.tmp2, ...などの類似コンテンツ
最新の(タイムスタンプに基づく)ファイルを探したいです。ファイルがtwo.txtで、すべてのファイルがtmpファイル(two.tmp1とtwo.tmp2)であると仮定し、それを既知のディレクトリにコピーします。最新のファイルをコピーする方法を知っています。
cp -p " ls -dtr1 "$SRC_DIR"/* | tail -1
" "$DEST_DIR"
しかし、関連書類がすべて必要です。誰でもどんなアイデアがありますか?ありがとうございます!
答え1
まあ、目標は明らかです。 bash構文だけを使用してbashで何かをすばやくハックしました。
#!/usr/bin/env bash
latest_file ()
{
local file latest
local src="$1"
local dst="$2"
for file in "${src:-.}"/*;
do
[[ $file -nt $latest ]] && latest="$file";
done;
cp -v "${latest%.*}"* "$dst"
}
main() {
if (($# < 2)); then
printf '%s\n' "Usage: ${0##*/} [src] [dst]"
exit 1
else
latest_file "$@"
fi
}
main "$@"
latest
この内容を「拡張不要」というスクリプトに入れてください。- 実行可能にする
chmod u+x latest
- 実行
./latest source destination
#sourceはソースディレクトリ、ターゲットはファイルをコピーするターゲットディレクトリです。 - 引数なしで実行すると、
./latest
何をすべきかを教えてくれます。