Questions tagged «find»

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

3
'find -exec'如何传递带有空格的文件名?
如果我的目录包含一些名称带有空格的文件,例如 $ ls -1 dir1 file 1 file 2 file 3 我可以将它们全部成功复制到另一个目录,如下所示: $ find dir1 -mindepth 1 -exec cp -t dir2 {} + 但是,的输出find dir1 -mindepth 1包含未转义的空格: $ find dir1 mindepth 1 dir1/file 1 dir1/file 3 dir1/file 3 如果我使用print0而不是print,则输出仍包含未转义的空格: $ find dir1 mindepth 1 -print0 dir1/file 1dir1/file 2dir1/file 3 要使用手动复制这些文件cp,我需要转义空格;但是,似乎当cp的参数来自时,这是不必要的find,而不管我是使用命令+还是\;命令的末尾。 …

9
如何链接命令“ date -d @xxxxxx”和“ find ./”?
我有名称为时间戳的目录,自1970-01-01起以毫秒为单位: 1439715011728 1439793321429 1439879712214 . . 我需要这样的输出: 1442039711 Sat Sep 12 08:35:11 CEST 2015 1442134211 Sun Sep 13 10:50:11 CEST 2015 1442212521 Mon Sep 14 08:35:21 CEST 2015 . . 我可以通过命令列出所有目录: find ./ -type d | cut -c 3-12 但是我不能将输出放到下一个命令:date -d @xxxxxx并操纵输出。 我怎样才能做到这一点?
14 shell  find  date 

2
在find命令中newermt是什么意思?
我知道我可以使用此选项在特定修改时间之间查找文件。但是我很好奇这是什么意思? 我曾经man find | grep newermt尝试寻找一些东西。但是我没有直接的满足感。看来-newer file,mtime东西可能与此有关。但我不确定。 那么,-newermt实际上是什么意思呢?

1
查找名称以大写字母开头的文件
我正在尝试查找所有名称以大写字母开头的文件。我尝试使用以下命令: find . -type f -regex '.*\/[A-Z][^/]*' 它只查找小写字母的路径。以下作品: find . -type f -regex '.*\/[ABCDEFGHIJKLMNOPQRSTUVWXYZ][^/]*' 和: find . -type f | grep '.*\/[A-Z][^/]*$' 我尝试了的所有不同选项regextype,但结果相同。 为什么在其中find包含小写字母[A-Z]?我以为正则表达式是[a-zA-Z]。有什么办法可以指定仅大写字母的范围find吗?
14 find 

5
排序find -exec ls的输出
是否可以find … -exec ls -ls ;按文件名按字母顺序对输出进行排序? 这是我的cron命令: find /home/setefgge/public_html -type f -ctime -1 -exec ls -ls {} \; 这个命令在大多数情况下都可以。但是结果没有按照任何有意义的顺序排序。如果将它们按文件名字段进行排序将非常有帮助。
14 find  ls  sort 

3
如果-exec失败则中断查找
有没有一种方法可以写成find这样,如果-exec对文件进行的一项操作失败,它就会中断? 例如(javac方便地用作可以在某些文件上返回退出代码1且没有其他原因的程序): $ echo "public classXX A{}" >> A.java $ echo "public class B{}" >> B.java $ find . -iname \*.java -exec javac {} \; ./A.java:1: error: class, interface, or enum expected public classXX A{} ^ 1 error 在上面的示例中,尽管exec文件上的A.java失败(并返回了退出代码1),但该find命令也继续执行并编译了文件B.java。有没有一种突破的方法,find或者我应该使用某种形式的for替代方法吗? 我的find版本: $ find -version | head -1 find (GNU findutils) 4.4.2
14 find 

5
cygwin中的find命令给出的参数格式不正确
我在Windows机器中使用cygwin。我正在尝试查找,并且给出的参数格式不正确。这是为什么? $ ls bootstrap.jar catalina-tasks.xml catalina.bat catalina.sh commons-daemon-native.tar.gz commons-daemon.jar cpappend.bat digest.bat digest.sh setclasspath.bat setclasspath.sh shutdown.bat shutdown.sh startup.bat startup.sh tomcat-juli.jar tomcat-native.tar.gz tool-wrapper.bat tool-wrapper.sh version.bat version.sh $ find . -name "version.sh" FIND: Parameter format not correct 在安装cygwin时是否应该安装任何东西,或者我做错了什么?
14 find  cygwin 

4
在bash脚本中使用可变扩展查找-exec
我正在尝试在bash脚本中运行类似于以下命令的命令。它应搜索的所有子文件夹,$sourcedir并将特定类型的所有文件复制到的根级别$targetdir。 #!/bin/bash # These are set as arguments to the script, not hard-coded sourcedir="/path/to/sourcedir" targetdir="/path/to/targetdir" find "$sourcedir" -type f -name "*.type" -exec sh -c 'cp "$1" "$2/`basename "$1"`"' "{}" "$targetdir" \; 这似乎很接近,除了{}没有传递$2给-exec sh -c ... 我希望这样做尽可能接近“正确的方式”,并允许对文件名中的特殊字符(特别是单引号字符)进行容忍。 编辑:我看到有人建议使用xargs或参数链。我的印象是,这仅适用于有限数量的参数。例如,如果我有成千上万个.jpg文件,我正试图将它们从许多画廊目录中复制到一个巨大的幻灯片目录中,则解决方案链接参数仍然有效吗? 编辑2:我的问题是我_在-exec命令中的第一个选项sh之前缺少。对于任何对如何使find命令起作用感到好奇的人,添加_,一切都会好起来的: find "$sourcedir" -type f -name "*.type" -exec sh -c 'cp "$1" "$2"' …

13
查找人类可读的文件
我正在尝试找到一种有效的方法来完成OverTheWire强盗挑战的5级。 无论如何,我有一堆文件,只有一个文件符合以下条件: 人类可读 大小为1033字节 不可执行 现在,我正在使用find命令,并且能够找到与最后两个条件匹配的文件: find . -size 1033c ! -executable 但是,我不知道如何排除不可读的文件。我为该挑战找到的解决方案使用-readable测试参数,但我认为这不起作用。-readable仅查看文件的权限,而不查看其内容,而挑战说明则要求输入ASCII文件或类似名称。
14 files  find 

5
如何搜索存在两个不同单词的文件?
我正在寻找一种搜索在同一文件中存在两个单词实例的文件的方法。到目前为止,我一直在使用以下内容进行搜索: find . -exec grep -l "FIND ME" {} \; 我遇到的问题是,如果“ FIND”和“ ME”之间没有一个空格,则搜索结果不会产生该文件。如何在文件中同时存在单词“ FIND”和“ ME”而不是“ FIND ME”的情况下适应以前的搜索字符串? 我正在使用AIX。
14 grep  find  search 

2
为什么在find命令中有点?
通常,人们看到如下find命令: $ find . -name foo.txt 从当前目录开始搜索时。我发现在我的机器(Ubuntu,Cygwin)上,我得到的结果相同而没有点。 为什么通常包含它?是只是一个明确的约定,还是/在某些系统上是必需的?
14 find 

3
是否可以将“ find -exec”嵌套在另一个“ find -exec”中?
我追求的是以下内容,但是无论我如何转义{}和+ ; find ./ -maxdepth 1 -type d -name '.*' -exec \ find {} -maxdepth 1 -type f -name '*.ini' -exec \ md5sum \{\} \\; \; 看到Unix-&-Linux问题之后,我发现以下代码可以工作,但它不是嵌套find,因此我怀疑有更好的方法来完成此特定工作。 find ./ -maxdepth 1 -type d -name '.*' \ -exec bash -c 'for x; do find "$x" -maxdepth 1 -type f -name "*.ini" …

2
使用正则表达式量词查找命令,例如{1,2}
我一直试图创建一个find命令字符串,该字符串将查找所有以数字1-99结尾但排除所有其他文件的文件。 例如,我想找到myfile1 myfile99而不是myfile456而不是myfilebackup 我在想的正则表达式是,myfile[1-9]{1,2}但是我无法将它与find一起使用。 find . -regex '.*myfile[0-9]{1,2}' 要么 find . -iname 'myfile[0-9]{1,2}' 从我可以看到的那{1,2}部分是不起作用的。 (顺便问一下,您可以-name -regex互换使用吗?) 任何帮助表示赞赏。

3
Bash:通过管道将“查找”输出到“ readarray”
我正在尝试使用来搜索文件find,并将这些文件放入Bash数组中,以便可以对它们执行其他操作(例如ls,grep它们)。但是我不知道为什么readarray在将find输出通过管道传输时不读取输出。 假设我在当前目录中有两个文件,file1.txt并且file2.txt。因此find输出如下: $ find . -name "file*" ./file1.txt ./file2.txt 因此,我想将其传送到一个数组,该数组的两个元素是字符串"./file1.txt"和"./file2.txt"(显然没有引号)。 我已经尝试过了,其中包括: $ declare -a FILES $ find . -name "file*" | readarray FILES $ echo "${FILES[@]}"; echo "${#FILES[@]}" 0 从echo输出中可以看到,我的数组为空。 那我到底在做什么错?为什么readarray不将find的输出作为标准输入读取并将这些字符串放入数组?
14 bash  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.