我有这个代码来查找超过7天的文件/目录,然后执行一个MV。但是我意识到我需要一个不同的目录和文件命令。 -type
也不支持fd
- 手册说它只支持一个字符。
find /mnt/third/bt/uploads/ -type f -mtime +7 -exec mv {} /mnt/third/bt/tmp/ \;
如何将文件和目录> 7d移动到/mnt/third/bt/tmp/
,同时保持/mnt/third/bt/uploads/
中的相同结构?
由于
答案 0 :(得分:2)
脚本:(必须有一个GNU查找,如果你的“查找”是GNU版本改变gfind找到)
FROMDIR="/mnt/third/bt/uploads"
TODIR="/mnt/third/bt/tmp"
tmp="/tmp/movelist.$$"
cd "$FROMDIR"
gfind . -depth -mtime +7 -printf "%Y %p\n" >$tmp
sed 's/^. //' < $tmp | cpio --quiet -pdm "$TODIR"
while read -r type name
do
case $type in
f) rm "$name";;
d) rmdir "$name";;
esac
done < $tmp
#rm $tmp
说明:
脚本不处理符号链接,fifo文件等,并且会在删除目录中打印zilion错误是旧的,但它们不是空的(包含新文件或子目录)
DRY RUN first!:)
答案 1 :(得分:1)
如果要搜索文件和目录,请查找supports boolean operators。