bash - Bash 移动文件,如果源文件较大,则覆盖
问题描述
我想将文件从目录 A 移动到目录 B。如果源文件的文件大小大于目标文件,我只想覆盖现有文件,否则跳过此文件。
解决方案
@axiac 提到这stat
比 更有效wc
,所以我改变了答案。
您可以使用stat
或wc
来比较两个文件的大小,如下所示。
my_mv () {
file1_path=$1
file2_path=$2
file1_size=$(stat -f "%z" $file1_path)
file2_size=$(stat -f "%z" $file2_path)
#file1_size=$(wc -c $file1_path | awk '{print $1}')
#file2_size=$(wc -c $file2_path | awk '{print $1}')
if [ "$file1_size" -gt "$file2_size" ]; then
mv $file1_path $file2_path
else
echo "Operation Aborted: \"$file1_path\" is not larger than \"$file2_path\""
fi
}
把这个函数放到你的 .bashrc/.zshrc 中,这个函数的使用方式和 .bashrc 一样mv
。
用法:
my_mv path/to/file1 path/to/file2
推荐阅读
- sql - SQL Server 使用查找转换导入的数据
- algorithm - 我们可以构建的三角形数量
- node.js - 从一个数组 Firestore (Firebase) 中选择随机值
- powerbi - 修复内存密集型计算列
- c - 良好的风格实践:C 变量
- .net - 使用 Octopus Deploy 部署 TopShelf Windows 服务每两次都失败
- php - 调用数据库查询时创建的新 PHPSESSID(使用 Directus)
- flowtype - 我可以一次导入所有流类型吗?
- spring-boot - Spring boot,Security,OAuth2:是否可以使用自定义 AuthorizationCodeResourceDetails?身份验证服务器需要重定向 url 中的特定参数
- php - 选择查询的准备好的语句问题