有人可以帮我修复脚本以搜索特定文件夹中的文件作为参数,并将它们移动到另一个文件夹中吗? 我已经尝试循环到while循环但没有成功,我不明白我做错了什么。我是初学linux脚本并试图理解它。
git update-ref refs/heads/master a4386cb82e1f6d1755e47ace1f378df35df31967
答案 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天的文件并移动它们。 (这没有经过测试,但它可以帮助您了解该怎么做)