如何从命令行将最新文件和带有扩展名的相关文件复制到另一个目录

如何从命令行将最新文件和带有扩展名的相关文件复制到另一个目录

假设我有一个包含以下文件的目录:

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. Run ./latest source destination # source 是源目录,destination 是将文件复制到的目标目录
  4. 如果您不带参数运行它,因为./latest它会告诉您该怎么做

相关内容