有人可以帮我修复一个脚本,用于在作为参数给出的特定文件夹中搜索文件,并将它们移动到另一个文件夹中吗? 我尝试循环进入 while 循环,但没有成功,而且我不明白我做错了什么。我是 Linux 脚本新手,并试图理解它。
StructuraFoldere=$1
shift
VechimeFis=$2
shift
Dirmutat=$3
shift
cout=1
echo
while [ $# -gt 0 ]
do
if [ -g $# ]
then -ls $#
fi
shift
echo find /"$#" -maxdepth 1 -mtime +"$VechimeFis" -type f -exec mv "{}" "$Dirmutat" \;
shift
cout=$[cout+1]
shift
done
最佳答案
我将回答您问题中最普遍的部分,“我是 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 脚本之后,我仍然发现它是非常有值(value)的资源。
虽然这不能回答您的具体问题,但我认为您需要在实现既定目标的基础知识上打下更坚实的基础。 我强烈地感觉到这将帮助您实现更广泛的目标——学习 shell 脚本。如果您仔细阅读并完成上述 Bash 初学者指南,您很快就会看到一种方法(或几种方法!)来编写您具体询问的文件搜索/移动脚本。
HTH。
关于linux - 搜索早于特定时间的文件并将其移动到特定文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50472295/