Unix 新手需要您的帮助。
我正在使用 Solaris 10,需要查找所有文件(不包括所有隐藏文件和目录)。最终目标是将其放入一个脚本中,该脚本将删除服务器上 60 天以上的文件。
我试过:
查找 . ! (-name '.*' -prune )
但它根本找不到任何文件。
任何建议都值得赞赏。
答案1
我认为问题在于您排除了名为“.*”的所有内容,并且您从“.”开始搜索(这与您的排除相匹配),因此您排除了所有内容。此外,我认为您误用了标志-prune
(它是一种操作,如-print
,因此不一定能用作否定表达式的一部分)。试试这个:
find . \( -name '.*' \! -name '.' -prune \) -o -print
这明确地在搜索中包含了 '.',然后排除了所有其他匹配的内容.*
。如果你知道你的起点不包含任何点文件,你可以稍微简化一下:
find * \( -name '.*' -prune \) -o -print
答案2
这应该有效:
find * | grep -v /\\.
答案3
需要查找除所有隐藏文件(文件和目录)之外的所有文件。
查找 .-name '[^.]*'
排除所有(隐藏文件)和目录。
查找 . -type f -name '[^.]*'
最终目标是将其放入一个脚本中,删除服务器上 60 天以上的文件
查找 . -name '[^.]*' -mtime +59 | xargs rm -f