find
我正在尝试使用以下命令获取文件列表:
find . \( -iname @eaDir -o -iname .DS_Store -o -iname Thumbs.db \) -prune -o -mtime -25 -type f -printf "%P\n"
这工作正常。
但是,如果我尝试将上述命令的输出重定向到文件,则后者仍为空:
FILES_TO_BACKUP=/tmp/__$$_myfiles.lst
find . \( -iname @eaDir -o -iname .DS_Store -o -iname Thumbs.db \) -prune -o -mtime -25 -type f -printf "%P\n" > $FILES_TO_BACKUP
有人知道为什么吗?
答案1
您是否在从脚本调用和从命令行运行之间更改用户或类似内容?如果是这样,则 PATH 可能已更改并且正在执行不同的查找。
对于像这样的特殊问题,我经常使用“strace”运行命令来查看它的不同之处。
从您给出的两次调用中,我无法看出任何差异,可能有暗示您正在从脚本运行第二个调用,所以也许这就是差异所在。您能否在两者之前运行“pwd”,以确保它们从同一位置运行,并且“which find”也可能会有所帮助。