搜索早于特定时间的文件并将其移动到特定文件夹中

时间:2018-05-22 16:17:13

标签: linux bash shell

有人可以帮我修复脚本以搜索特定文件夹中的文件作为参数,并将它们移动到另一个文件夹中吗? 我已经尝试循环到while循环但没有成功,我不明白我做错了什么。我是初学linux脚本并试图理解它。

git update-ref refs/heads/master a4386cb82e1f6d1755e47ace1f378df35df31967

3 个答案:

答案 0 :(得分:1)

我将回答您问题中最常见的部分,"我是初次使用Linux脚本并尝试理解它。"我这样做是因为它看起来就像你在一开始;告诉我的主要原因是你使用 $1$2 shift

比较这两个脚本:

第一个脚本:

FIRST=$1
shift
SECOND=$2
shift
THIRD=$3
shift

echo $FIRST
echo $SECOND
echo $THIRD

如果我用./scriptname.sh 1 2 3运行它,我会得到输出:

1
3
    # a blank line

第二个脚本:

FIRST=$1
SECOND=$2
THIRD=$3

echo $FIRST
echo $SECOND
echo $THIRD

如果我用./scriptname.sh 1 2 3运行它,我会得到输出:

1
2
3

换句话说,shift不是必需的,实际上是干扰。当你做这样的事情时,你只需要使用shift

FIRST=$1
shift
SECOND=$1
shift
THIRD=$1
shift

......或者更常见的是,在循环内部重复阅读$1

这是学习shell脚本的非常好的资源:

http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html

这将从一开始就帮助您,即使经过25年以上的shell脚本编写,我仍然觉得它是一个非常有价值的资源。

虽然这不能回答您的具体问题,但我觉得您需要更加坚实的基础知识,这些基础知识是您预定目标的基础。  我强烈地感到这将有助于您实现更广泛的目标 - 学习shell脚本。如果您仔细阅读并仔细阅读上述Bash初学者指南,您很快就会看到一种方式(或多种方式!)来编写您特别询问的文件搜索/移动脚本。

HTH。

答案 1 :(得分:-1)

这个单行可以找到作为第一个参数source directory传递的目录中的文件,它比第二个参数age旧,并将过滤后的文件移动到第三个参数{{1} }

destination directory

答案 2 :(得分:-1)

所以,你可能想要使用find命令。

my_directory=${1}
m_time = ${2}
for file in `find ${my_directory} -type f -mtime +${m_time}`; do mv -v ${file} /move/here; done

这只能查找$ 1 dir中超过$ 2天的文件并移动它们。 (这没有经过测试,但它可以帮助您了解该怎么做)