Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在带有find的bash脚本中忽略目录而不忽略其中的文件_Bash_Find_Grep - Fatal编程技术网

如何在带有find的bash脚本中忽略目录而不忽略其中的文件

如何在带有find的bash脚本中忽略目录而不忽略其中的文件,bash,find,grep,Bash,Find,Grep,我想运行find命令,但只查找目录中的文件,而不是目录或子目录本身。同样可以接受的做法是查找目录,但将其grep出来或类似的方式,仍然列出这些目录中的文件。从现在起,要在工作目录中查找最后一天更改的所有文件,并将DS_Store灰显并用下划线替换空格,请执行以下操作: find . -mtime -1 -type f -print | grep -v '\.DS_Store' | awk '{gsub(/ /,"_")}; 1' 任何帮助都将不胜感激 如果您有GNU查找: find . -mt

我想运行
find
命令,但只查找目录中的文件,而不是目录或子目录本身。同样可以接受的做法是查找目录,但将其grep出来或类似的方式,仍然列出这些目录中的文件。从现在起,要在工作目录中查找最后一天更改的所有文件,并将DS_Store灰显并用下划线替换空格,请执行以下操作:

find . -mtime -1 -type f -print | grep -v '\.DS_Store' | awk '{gsub(/ /,"_")}; 1'

任何帮助都将不胜感激

如果您有GNU
查找

find . -mtime -1 ! -name '.DS_Store' -type f -printf '%f\n'
find . -mtime -1 ! -name '.DS_Store' -type f -exec basename {} \;
将仅打印文件的基本名称

对于其他版本的
查找

find . -mtime -1 ! -name '.DS_Store' -type f -printf '%f\n'
find . -mtime -1 ! -name '.DS_Store' -type f -exec basename {} \;
然后你可以做:

find -name index.html -exec sh -c 'basename "$1" | tr " " _' _ {} \;

你回答了你自己的问题?您给出的命令似乎工作正常。例如,当我的当前工作目录是我的音乐文件夹时,我运行此命令。如果我在itunes中添加了一些内容,它会报告说,除了添加的音乐之外,所有子目录都发生了变化(因为它们也发生了变化)。我只想看文件,不想看目录。哦-类型f将导致find精确报告0个目录。我不明白<代码>-类型f
仅包括文件。您的意思是希望输出仅为文件名而不包含路径吗?(使用@Dennis回复自动通知。)当我在Mac上以$HOME/Music运行它时,您的命令(修改为将修改时间更改为7天)仅列出我添加或重命名的文件(以及控制文件)-这确实是应该的。非常感谢。很好的信息。忽略其他字符串或文件扩展名的语法是什么?例如,如果我想忽略.DS_Store和.itc。@瑞克:如果只是几个,你可以添加额外的
-名称“foo”
。你可以使用globbing(一定要引用它),混合正面和负面的断言来缩小范围。默认情况下,规格是“和”在一起的,但是有一个
-o
运算符和括号用于“或”和优先级分组。如果有一堆规范,那么正则表达式可能更短。