Questions tagged «find»

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

5
如何在给定文件夹中查找所有git存储库(快速)
天真的方法是find dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {} ,但是对我来说太慢了,因为我在git仓库中有很多深层的文件夹结构(至少我认为这是原因)。我已经读过有关它可以prune用来阻止find在找到内容后递归到目录的信息,但是有两件事。我不确定这是如何工作的(我的意思是prune,尽管我已经阅读了手册页,但我不明白该怎么做),第二个在我的情况下是行不通的,因为这会阻止find递归到.git文件夹中,而不是递归到所有文件夹中其他文件夹。 所以我真正需要的是: 对于所有子目录,请检查它们是否包含.git文件夹,然后在该文件系统分支中停止搜索并报告结果。如果这还将从搜索中排除任何隐藏目录,那将是完美的。
10 find  git 

2
if命令在find -exec中
我只是想列出当前目录下的所有目录和文件,并使用以下命令写出它们是文件还是目录: find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \; 我知道这是一个愚蠢的命令,我可以使用诸如-type f或的其他方式-type d,但是我想了解为什么这段代码无法按预期工作。它只是将目录打印到所有这些文件。例如,当输出find为时: . ./dir ./dir/file 我的代码输出是: . : directory ./dir : directory ./dir/file : directory 和输出 echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo …

6
查找具有给定扩展名的所有文件,这些扩展名的基本名称是父目录的名称
我想递归查找*.pdf目录中~/foo的每个文件,其基本名称与文件的父目录的名称匹配。 例如,假设目录结构~/foo如下所示 foo ├── dir1 │ ├── dir1.pdf │ └── dir1.txt ├── dir2 │ ├── dir2.tex │ └── spam │ └── spam.pdf └── dir3 ├── dir3.pdf └── eggs └── eggs.pdf 运行我想要的命令将返回 ~/foo/dir1/dir1.pdf ~/foo/dir2/spam/spam.pdf ~/foo/dir3/dir3.pdf ~/foo/dir3/eggs/eggs.pdf 是否可以使用find或其他一些核心实用程序?我假设使用-regex选项可以做到这一点,find但是我不确定如何编写正确的模式。
9 find 

3
如何按文件类型查找文件?
我知道我可以用查找文件find:find . -type f -name 'sunrise'。结果示例: ./sunrise ./events/sunrise ./astronomy/sunrise ./schedule/sunrise 我也知道我可以确定文件的文件类型:file sunrise。结果示例: sunrise: PEM RSA private key 但是如何按文件类型查找文件? 例如my-find . -type f -name 'sunrise' -filetype=bash-script: ./astronomy/sunrise ./schedule/sunrise



1
为什么从〜运行时find命令找不到目录?
下/tmp有一个名为的目录test_copy。 $ ls /tmp/test_copy/ a.sh b.sh $ cd /tmp /tmp$ find . -name test_copy ./test_copy 但是,如果我运行以下find命令,它将不会返回任何内容。 ~/scripts$ find /tmp -name test_copy ~/scripts$ 为什么find在最后一种情况下找不到目录?
9 linux  find 

3
如何将find找到的文件作为参数传递?
首先要截断一些琐碎但不适用的答案:我既不能使用find+ xargs技巧,也不能使用其变体(如findwith -exec),因为每次调用我需要使用很少的此类表达式。最后,我会回到这一点。 现在来看一个更好的例子,让我们考虑: $ find -L some/dir -name \*.abc | sort some/dir/1.abc some/dir/2.abc some/dir/a space.abc 我如何将这些作为参数传递给program? 只是做不成功 $ ./program $(find -L some/dir -name \*.abc | sort) 失败,因为program获取以下参数: [0]: ./program [1]: some/dir/1.abc [2]: some/dir/2.abc [3]: some/dir/a [4]: space.abc 可以看出,带有空间的路径被分割,并program认为它是两个不同的参数。 报价直到生效 似乎像我这样的新手用户,遇到此类问题时,往往会随机添加引号,直到最终起作用为止-仅在这里似乎没有帮助… "$(…)" $ ./program "$(find -L some/dir -name \*.abc | …


8
删除目录中名称与文件列表中的一行不匹配的所有文件
我有一个包含1000多个文件的目录。在一个文本文件中,我大约有50个文件名,每行一个。我想删除目录中所有文件名与列表中的条目不符的文件。最好的方法是什么?我启动了一个Shell脚本,但是无法确定要确定文件名在列表中的正确命令。谢谢。
9 files  find 

6
使用basename解析文件中包含的路径列表
我正在运行Mac OSX,并尝试使用命令行查找具有相同名称的文件数。 我尝试使用以下命令: find ~ -type f -name "*" -print | basename | sort | uniq -d > duplicate_files 它不起作用!当我执行以下操作时: find ~ -type f -name "*" -print > duplicate_files 然后plicate_files确实包含了我所有文件的路径。因此,我认为问题出在basename-它不接受标准输入。然后,我尝试了以下操作: basename $(find ~ -type f -name "*" -print) > duplicate_files 但这又似乎不起作用。在互联网上搜索似乎并没有带来太多乐趣。任何想法最欢迎。

2
使用find + xargs移动文件:目标不是目录?
当我运行以下命令时: > mkdir some_dir > find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} some_dir 我收到数百行这样说: mv: target `/foo/bar/XX.csv` is not a directory 为什么?我以为xargs会执行: mv /foo/barXX.csv some_dir 对于find找到的每个文件。这是怎么回事?顺便说一下,这是zsh 更新: 更新1: 我试过了: find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} -t some_dir 但是然后我得到了几行像: mv: cannot stat `{}': No …
9 find  xargs 

4
将多个目录传递给find中的-prune选项
我find用来查找和删除备份文件,但希望从搜索中排除某些目录。备份文件名可能会终止.bck,bak,~,或backup。 只有三个要排除的目录的最小工作示例(MWE)代码是: #! /bin/bash find . -type d \( -path "./.*" -o -path "./Music" -o -path "./Documents" \) -prune -o -type f \( -name "*.bck" -o -name "*.bak" -o -name "*~" -o -name "*.backup" \) -print0 | xargs -0 --no-run-if-empty trash-put 语法\( -path "dir1" -o -path "dir2" ... -o -path …

3
查找常规文件和目录
我如何分辨(如果可以分辨!)查找以查找目录和文件类型的文件? find -type fd 就像这里的启发式黑暗时代一样。
9 find 


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.