是否有任何命令会将除最新时间戳文件之外的所有文件从一个目录复制到另一个目录中。
Dir1 - file1,file2,file3,file4(新时间戳)
cp到Dir2 - file1,file2,file3,我不想要file4,因为这是Dir1中的新文件。
答案 0 :(得分:0)
您可以使用ls -1tr | tail -1
构造来获取最新文件。
然后复制文件,最新文件除外。
如果文件列表通常很短,则可以更改此代码 创建一个文件列表,然后进行复制 - 这样会更有效。
dir2="../somewhereelse"
exception=$(ls -1tr | tail -1)
for fn in *; do
if [[ $fn == $exception ]]; then
continue
fi
cp "$fn" "$dir2"
done
答案 1 :(得分:0)
#!/bin/bash
dir1=/first/dir
dir2=/second/dir
# first loop through and find oldest file
# http://mywiki.wooledge.org/BashFAQ/003
unset -v newest
for file in "$dir1"/*; do
[[ -f "$file" ]] && [[ "$file" -nt "$newest" ]] && newest="$file"
done
# then loop through and perform actions on the others
for file in "$dir1"/*; do
if [[ -f "$file" ]] && [[ ! "$file" == "$newest" ]]; then
cp -p "$file" "$dir2"
fi
done