有没有办法检查 Mac 上的文件夹中是否有丢失的项目?
假设我想扫描我的外部硬盘,并找到标题中带有某个单词但缺少文件的所有文件夹Data.log
?
实现这一目标最简单的方法是什么,或者是否可行?
答案1
使用@Nifle 的出色答案,但包括您的具体内容,尝试:
% find /Volumes/WD -type d -name *[TEST]* | while read a; do if [ ! -f $a/Data.log ]; then echo $a; fi; done
把这句话分解一下:
find /Volumes/WD -type d -name *[TEST]*
:从文件树/Volumes/WD
中遍历外部硬盘,查找名称中-type d
包含某处 ( ) 的目录 ( )。[TEST]
-name *[TEST]*
命令的输出
find
通过管道传输|
到循环中bash
while
,循环每次拉出一个匹配的目录,将它们存储在变量中a
。在循环内:
- 该
if
语句检查文件Data.log
是否不在正在考虑的目录中。在if
语句中,$a
被扩展,因此$a/Data.log
是类似 的路径/Volumes/WD/<dir1>/<dir2>/Data.log
。要获得您感兴趣的测试!
,并且-f
使用,以便只有不存在具有该名称的文件的情况才会评估为TRUE
(!
是NOT
,并且-f
表示文件而不是任何其他类型的文件系统条目,如目录或链接)。 - 最后,如果我们找到一个匹配的目录,它将被打印出来,
echo $a
其中的内容$a
被上面通过 from 管道传入的目录名替换find
。
- 该
我知道我正在重复以前的答案,但我希望这可以澄清@Nifle 提出的精彩单行代码中发生的事情并解决您的问题。
答案2
这应该可以解决问题,在 shell 中运行它。
find /Volumes/WD/ -type d -name '*TEST*' | while read a; do if [ ! -f $a/Data.log ]; then echo $a; fi; done;