コマンドラインから最新のファイルと拡張子を持つ関連ファイルを別のディレクトリにコピーする方法

コマンドラインから最新のファイルと拡張子を持つ関連ファイルを別のディレクトリにコピーする方法

次のファイルを含むディレクトリがあるとします。

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 "$@"
  1. latestこの内容を「拡張不要」というスクリプトに入れてください。
  2. 実行可能にする chmod u+x latest
  3. 実行./latest source destination #sourceはソースディレクトリ、ターゲットはファイルをコピーするターゲットディレクトリです。
  4. 引数なしで実行すると、./latest何をすべきかを教えてくれます。

おすすめ記事