Questions tagged «find»

对于与查找有关的问题,请使用命令行实用程序在目录层次结构中搜索文件。使用此标记可解决有关find本身的问题或有关使用find命令行实用程序而引起的问题的问题。

1
find / path / -exec命令'{}'中的{}是什么?
我很好奇以下命令中的{}是做什么用的? 示例命令: find /foo/ -name "*.txt" -exec rm -v {} \; 手册页提供了一个简短的内容,但让我有些困惑: 字符串'{}'被当前文件名替换,该文件名在命令的参数中出现的所有位置(而不仅仅是在单独的参数中)(在某些版本的find中)。
12 find 

2
查找用户无法阅读的文件?
我想查找特定用户将无法读取的文件。 假设用户名是“ user123”,并且它们在一个名为“ user123”的组中。我想找到的文件,如果它们是user123所拥有的,则打开u + r;失败,如果该文件是组user123,则应启用g + r;否则它可能会打开o + r。 由于GNU find具有“可读性”,因此我可以这样做: sudo -u user123 find /start ! -readable -ls 但是,该过程必须由没有sudo访问权限的用户运行。因此,II尝试了此操作:(它不检查o + r,但在这一点上并不重要) find /start \( -user user123 ! -perm -u=r \) -o \( -group user123 ! -perm -g=r \) -ls 但它列出了该文件: 272118 4 -rw------- 1 user123 user123 3243 Jul …
12 find 


2
bash find:获取找到文件的目录
我有一个名为“ parent_folder”的父文件夹,其中包含许多子文件夹,在这些子文件夹中是一个名为“ foo.mp4”的文件。 通过执行以下操作,我可以轻松找到这些文件: mymacbook:parent_folder username$ find ./ -name "foo.mp4" -exec echo {} \; 现在返回相对于parent_folder /的每个文件的路径 ./path/to/foo.mp4 我怎么能只返回路径,而没有文件名?
12 shell  find  osx 


4
查找不在.gitignore中的文件
我有找到在我的项目中显示文件的命令: find . -type f -not -path './node_modules*' -a -not -path '*.git*' \ -a -not -path './coverage*' -a -not -path './bower_components*' \ -a -not -name '*~' 如何过滤文件,使其不显示.gitignore文件中的文件? 我以为我使用: while read file; do grep $file .gitignore > /dev/null && echo $file; done 但是.gitignore文件可以具有glob模式(如果文件位于.gitignore中,它也将不适用于路径),如何根据可能具有glob的模式过滤文件?
12 grep  find  wildcards  git 

2
如何在查找中使用逻辑或?
在bash shell中ls可以通过使用逻辑OR功能(当然我也可以这样做,ls name1 name2但是我的真实示例更加复杂): ls @(name1|name2) 有没有办法做到这一点find? 我天真的实现: find . -maxdepth 1 -name @("name1"|"name2") 不起作用(它什么也不输出)
12 find  ls  patterns 

3
diff -r仅适用于某些文件类型
有没有一种方法可以执行两个目录的递归比较,但仅比较(在各自位置)匹配特定文件名或文件类型谓词的文件? 例如,我想这样做的东西像 diff -r dir-a dir-b -filenames *.java, ivy.xml, build.xml ...甚至更好: diff -r dir-a dir-b -filetype text 显然,并不是强制性使用,diff因为我认为有一个咒语,find并且-exec diff也可能会成功(我只是不知道在后一种情况下如何生成互补文件路径)。

5
使用“查找”命令找到打开的文件
这可能很容易,但是我无法弄清楚,而且几乎不可搜索。在文件夹层次结构中,我只有一个类型为xyz的文件。我想找到该文件并使用终端命令将其打开。 find . -name *.xyz 这将返回我要查找的文件。现在如何不输入名称就自动打开它? find . -name *xyz | open 这行不通。它说没有找到打开命令。
12 linux  terminal  find  pipe 

3
如何查找按扩展名分组的总文件大小
我在与其他同事共享的集群上工作。硬盘是有限的(在某些情况下已经装满),因此我偶尔会清理部分。我想快速执行此操作,因此直到现在,我都将大于100 MB的文件列表设置为3个月以上,以查看是否仍然需要它们。 但是现在我正在考虑可能存在一个文件夹,其中缺少> 1000个较小的文件,因此我想以一种简单的方法来查看是否是这种情况。从生成数据的方式来看,这将有助于获取每个扩展的总大小列表。在此问题的上下文中,“扩展名”是文件名中最后一个点后面的所有内容。 假设我有多个包含多个文件的文件夹: folder1/file1.bmp 40 kiB folder1/file2.jpg 20 kiB folder2/file3.bmp 30 kiB folder2/file4.jpg 8 kiB 是否可以列出每个文件扩展名的总文件大小列表,如下所示: bmp 70 kiB jpg 28 kiB 我不在乎没有扩展名的文件,因此可以忽略它们或将它们放在一个类别中。 我已经通过手册页去ls,du和find,但我不知道究竟是什么工作的工具...
12 find  ls  disk-usage 

5
如何分类人类可读的大小
我基本上是在寻找文件,然后按大小排序。如果我不按照人类可读的大小对脚本进行排序,那么该脚本就可以工作。但我希望尺寸能被人类读取。如何排序人类可读的尺寸? 例如: ls -l | sort -k 5 -n | awk '{print $9 " " $5}' 这按预期工作,我得到的文件大小以字节为单位递增: 1.txt 1 test.txt 3 bash.sh* 573 DocGeneration.txt 1131 andres_stuff.txt 1465 Branches.xlsx 15087 foo 23735 bar 60566 2016_stuff.pdf 996850 现在,我希望该大小能被人类读取,因此我在ls中添加了-h参数,现在某些文件出现了故障: ls -lh | sort -k 5 -n | awk '{print $9 " " $5}' …
11 find  ls  sort 

2
有选择地使用chmod命令
我想对特定目录下的所有文件和子目录设置755权限,但是我只想对不具有755权限的那些组件执行chmod 755。 find /main_directory/ -exec chmod 755 {} \; 如果find命令返回一个长列表,则将花费大量时间。我知道我可以使用stat命令来检查每个组件的八进制文件级别权限,然后使用if-else来切换文件权限,但是是否有任何单行方法使用find并xargs首先检查文件/目录具有的权限,然后将chmod其更改为755(如果设置为其他值)。

4
具有两个或更多文件的目录
我想找到当前目录的子目录(即子目录),其中包含2个或更多常规文件。 我对包含少于2个文件的目录不感兴趣,对仅包含子目录的目录也不感兴趣。
11 files  find 

4
将glob转换为`find`
我一次又一次遇到这个问题:我有一个glob,它与正确的文件完全匹配,但是导致Command line too long。每次我将其转换为find和的某种组合时,grep都可以在特定情况下使用,但并非100%等效。 例如: ./foo*bar/quux[A-Z]{.bak,}/pic[0-9][0-9][0-9][0-9]?.jpg 是否有将glob转换为find我不知道的表达式的工具?还是有一个选项find可以匹配glob,而不匹配子目录中的同一个glob(例如foo/*.jpg,不允许match bar/foo/*.jpg)?
11 find  wildcards 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.