【问题标题】:bash script to move all old files excluding directories用于移动除目录之外的所有旧文件的 bash 脚本
【发布时间】:2020-06-01 04:06:44
【问题描述】:

我是 bash 脚本的新手,我想创建一个 bash 脚本,它只根据脚本中定义的天数将旧文件(而不是目录)从源目录移动到目标目录。

#!/bin/bash

echo "Enter Your Source Directory"
read soure

echo "Enter Your Destination Directory"
read destination 

echo "Enter Days"
read days

find $soure -mtime -$days -exec mv {} $destination \;
echo "Files which were $days Days old moved from $soure to $destination"

我可以移动文件,但它也保留了我不希望满足特定要求的目录结构。

【问题讨论】:

  • 调试提示:要检查find 是否正确列出文件,请删除-exec ...。如果正确,请为 mv 设置 -v 选项。

标签: bash


【解决方案1】:

可能是你的文件名中包含空格,那么mv 命令就会出错。试试这个吧。

find $soure -mtime -$days -exec mv "{}" $destination \;

更多建议可能是使用标识符$1$2$3 而不是这个read 替代方案,因为它更容易与制表符完成一起使用。

【讨论】:

  • 你错了,find{} 处理文件名中的所有特殊字符没有任何问题。事实上,find 甚至都看不到双引号,因为在 bash 的扩展时,"{}" 将扩展为 {}(不带双引号)并发送到 find,根本不带双引号(你'这里的扩展真的很混乱)。
【解决方案2】:

添加 -type f 以确保您只移动文件,而不是目录

find "$shore" -type f -mtime -$days -exec mv "{}" "$destination" \;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2011-04-06
    • 2022-08-09
    • 1970-01-01
    • 2019-08-27
    • 2014-04-09
    • 1970-01-01
    相关资源
    最近更新 更多