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

标签 linux bash shell

有人可以帮我修复一个脚本,用于在作为参数给出的特定文件夹中搜索文件,并将它们移动到另一个文件夹中吗? 我尝试循环进入 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$2shift

比较这两个脚本:

第一个脚本:

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/

相关文章:

linux - 在命令行中编码,什么是-Wall?

php - 在 php 中设置允许变量的松散翻译?

python - 在 .profile 中运行程序会减慢 GUI startx

bash - 存储在变量中的赋值语句导致在 Bash 中找不到命令错误

linux - 使用 bash 脚本格式化 csv 中的日期列

linux - 创建包含内容的文件,其中内容有新行

bash - 将文件夹树中的所有 .pdf 文件转换为 .png

bash - 我如何知道在 bash 中使用 awk 首先出现了哪个定界符?

linux - 如何比较 bash 中的两个配对列表?

python - python中格式错误的环境变量检测