首页 > 解决方案 > 创建 Unix shell 脚本以将非空文件从源目录移动到目标目录并为其添加时间戳

问题描述

我正在尝试创建一个 shell 脚本来将非空文件从源目录移动到目标目录并向它们添加时间戳。我在用

find . -type f -size +0 -print0 | xargs -I {} -r0 mv {} $Tgt_dir/{}_`date +%m%d%Y`

但它不工作。能否请你帮忙。

谢谢

标签: linuxunixcygwin

解决方案


您可以使用-printfinfind打印mv带有源的完整路径和目标中的基本名称的命令,并将其通过管道传输到 shell:

date=$(date +%m%d%Y)
find . -type f -size +0 -printf "mv '%p' '$Tgt_dir/%f_$date'" | bash

%p是完整路径名,%f是基本名。

要移动至少包含一行的文件,请编写一个计算行数的命令:

date=$(date +%m%d%Y)
find "$Src_dir" -type f -size +0 -printf "if [ $(wc -l '$p') -gt 1 ]; then mv '%p' '$Tgt_dir/%f_$date'; fi" | bash


推荐阅读