在以下命令中,我只想搜索非隐藏的目录,如何使用以下命令执行此操作。我想在搜索日志文件时忽略隐藏目录
find /home/tom/project/ -name '.log.txt'
输出:
/home/tom/project/.log.txt
/home/tom/project1/.log.txt
find: Filesystem loop detected; ./.snapshot/hourly.0' has the same device number and inode as a directory which is 2 levels higher in the filesystem hierarchy.
find: Filesystem loop detected; ./.snapshot/hourly.1' has the same device number and inode as a directory which is 2 levels higher in the filesystem hierarchy.
我想消除所有查找消息或不在隐藏目录中搜索
ls /home/tom/project/
dir1
dir2
.backup
.snapshot/
.ignore/
答案1
如果你只想忽略错误消息,那么将 stdout 重定向到文件或 /dev/null
find /home/tom/project/ -name '.log.txt' 2>/dev/null
如果您对其他错误消息感兴趣,但对问题中提到的特定消息不感兴趣,则通过 grep -v 管道输出
find /home/tom/project/ -name '.log.txt' | grep -v 'Filesystem loop detected'
答案2
尝试
find . -name '.log.txt' ! -wholename ".*.*/.log.txt"
查找所有名称为 .log.txt 的文件,但还要确保文件完整路径在文件夹部分不包含多个点。第一个点是当前目录。
如果提供的不是当前目录,而是绝对路径,请使用以下命令
find . -name '.log.txt' ! -wholename "*.*/.log.txt"