如何获取find命令的参数并打印出来?

时间:2015-12-18 09:38:06

标签: linux bash shell

我想仅列出过去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命令的参数并将其打印出来?

3 个答案:

答案 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