【发布时间】:2012-08-26 17:20:36
【问题描述】:
我正在寻求一些 Bash 脚本的帮助(在 OSX 上)。我想创建一个带有两个参数的脚本——源文件夹和目标文件夹——并检查源层次结构中的所有文件以查看它们是否存在于目标层次结构中。即,给定一张数据 DVD,检查其中包含的文件是否已经在内部驱动器上。
到目前为止,我想出的是
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Usage is command sourcedir targetdir"
exit 0
fi
source="$1"
target="$2"
for f in "$( find $source -type f -name '*' -print )"
do
我现在不确定如何最好地获取没有路径的文件名,然后查看它是否存在。我真的是脚本的初学者。
编辑:到目前为止给出的答案在紧凑代码方面都非常有效。但是,我需要能够在目标层次结构中的任何位置查找在整个源层次结构中找到的文件。如果找到,我想比较校验和和最后修改日期等并发表评论,或者,如果没有找到,我想注意这一点。目的是检查外部媒体上的文件是否已经上传到文件服务器。
【问题讨论】:
-
你有没有想过获取两个文件夹的内容然后运行一个差异?根据您正在谈论的文件数量,这种方法可能会更快。
-
另外,你也需要下到子目录吗?
-
jedwards - 下降到子目录是至关重要的。为了给您一些背景信息,以及为什么我采用循环方法,我有一系列数据 DVD,我希望根据我的文件服务器检查它们的内容,看看我是否可以将它们装箱。第 1 步是检查文件是否存在,第 2 步可能是查看校验和、日期、大小等,然后在以下位置输出有用的信息:1. 未找到文件,2. 找到文件但未找到校验和匹配。