linux - 创建 Unix shell 脚本以将非空文件从源目录移动到目标目录并为其添加时间戳
问题描述
我正在尝试创建一个 shell 脚本来将非空文件从源目录移动到目标目录并向它们添加时间戳。我在用
find . -type f -size +0 -print0 | xargs -I {} -r0 mv {} $Tgt_dir/{}_`date +%m%d%Y`
但它不工作。能否请你帮忙。
谢谢
解决方案
您可以使用-printf
infind
打印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
推荐阅读
- java - 如何在我的代码中正确使用静态变量?
- php - 如何从 Wordpress 的面包屑中删除“主页”
- ruby-on-rails - 无法通过我的应用将图片上传到 Google Cloud Platform
- python-2.7 - addinfourl 实例没有属性“查找”(python2.7)
- sql-server - 如何在 SQL Server 中将大十进制转换为 varchar?
- ios - iPad上的WKWebView水平滚动
- java - 有没有办法在 Cucumber 数据表中操作值?
- javascript - 不再支持 html 表
- swift - 根据路径更改响应模型/形状
- spring-mvc - Thymeleaf 动态 href 使用输入值