我想仅列出过去30天内未修改的文件夹并打印出来。
workspace_ts="/home/user/workspace"
if [[ -n $(find $workspace_ts -mindepth 1 -maxdepth 1 -type d -mtime -30) ]];then
echo -e "\t- It seems that [folder_name] wasn't modified during last 30 days"
fi
如何获取find命令的参数并将其打印出来?
答案 0 :(得分:2)
如果你正在做的只是打印一条消息,你可以使用printf选项,因为它是最有效和最简单的方法。
find /home/user/workspace -mindepth 1 -maxdepth 1 -type d -mtime +30 -printf "\t- It seems that %p wasn't modified during last 30 day\n"
%p
是文件的名称(运行目录查找的完整路径)
%f
如果您只想要基名。
您可以使用它显示许多其他有用的东西,可以在手册页的printf部分找到
答案 1 :(得分:1)
您不需要循环,因为您可以使用find
/ -exec
参数直接在-execdir
执行命令,其中您的文件夹名称位于{}
,例如:
find /home/user/workspace -mindepth 1 -maxdepth 1 -type d -mtime +30 -execdir echo "It seems that {} wasn't modified during last 30 days" ';'
将打印您的文件夹名称。如果您需要绝对路径,请将-execdir
更改为-exec
。
以上语法适用于BSD和& GNU find
,但对于GNU,文件夹名称将以./
为前缀。请参阅:Unix SE上的Why the dot in find commands?。
要关注符号链接,请考虑添加-L
。
如果您对可移植性感兴趣,请检查:How to force GNU find to follow POSIX standard?
答案 2 :(得分:0)
你可以在中进行循环:
QObject