请参阅以下问题。实际上,我只想将 20022021 文件夹(其中包含子目录和文件)移动到目标,但它会移动两个目录。
nasa:/# find /tmp/source -mindepth 1 -mtime -1 -exec mv -t /tmp/destination/ {} \;
find: ‘/tmp/source/20022021’: No such file or directory
find: ‘/tmp/source/21022021’: No such file or directory
nasa:/# cd /tmp/destination/
nasa:/tmp/destination/# ls
20022021 21022021
nasa:/tmp/destination# ls -lrt
total 8
drwxr-xr-x 3 root root 4096 Feb 20 13:27 20022021
drwxr-xr-x 2 root root 4096 Feb 21 06:35 21022021
我尝试使用 -mtime +1,但它没有移动任何目录,它仍然留在源中。请告诉我这里的问题是什么
nasa:/# find /tmp/source -mindepth 1 -mtime +1 -exec mv -t /tmp/destination/ {} \;
nasa:/# cd /tmp/source
nasa:/tmp/source# ls
20022021 21022021
nasa:/tmp/source# ls -lrt
total 8
drwxr-xr-x 3 root root 4096 Feb 20 13:27 20022021
drwxr-xr-x 2 root root 4096 Feb 21 06:35 21022021
nasa:/# cd /tmp/destination/
nasa:/tmp/destination/# ls -lrt
total 0
答案1
-exec
如果您更改为 ,您将看到您的问题,这将打印您正在运行的命令。错误消息是因为您正在扫描已经移动的-exec echo
文件夹的子目录:/tmp/source/20022021
find: ‘/tmp/source/20022021’: No such file or directory
通过使用进行修复find -maxdepth 1
,以便一旦检查了顶级文件夹,它的子目录就不会稍后被扫描/移动,或者如果您想扫描子目录,请附加-prune
到行尾,以便如果顶级目录没有移动,find 将进入子目录。
find /tmp/source -mindepth 1 -maxdepth 1 -mtime -1 -exec mv -t /tmp/destination/ {} \;
find /tmp/source -mindepth 1 -mtime -1 -exec mv -t /tmp/destination/ {} \; -prune