Questions tagged «find»

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

5
$ find -exec cd =>给出错误:=> find:'cd':没有这样的文件或目录
当我运行此命令时,它起作用: $ find . -inum 888696 -exec ls '{}' \; Conversation.pst Outlook Data File Outlook Data File.sbd Trash Unsent Messages Inbox.pst Outlook Data File.msf Sent.pst Trash.msf Unsent Messages.msf 然而,当更换ls与cd它不工作: $ find . -inum 888696 -exec cd '{}' \; find: ‘cd’: No such file or directory 我知道cd是一个bash内置的,所以我想这里面确实没有任何工作: $ find . -inum …
8 bash  find  cd-command 

2
为什么不找到/ rm -iname'* phpmyadmin'删除phpMyAdmin-Version-XYZ.zip?
我有以下代码: find ./ -iname '*phpmyadmin' -exec rm -rf {} \; 它删除名为的目录phpmyadmin,但不会删除名为的文件phpMyAdmin-Version-XYZ.zip 即使删除了-rf,它也仍然不会删除(可能是因为-iname的第二个问题不影响大小写不敏感)。 有没有办法删除单个rm(文件,目录,软链接)中的任何inode? 为什么添加-iname无效? 注意:我没有在中找到“删除任何inode”参数man rm。
8 find  rm 

2
从发现到grep
我想做什么? 编写一个命令,查找我项目中任何其他文件都不需要的文件。 我尝试了什么? 我find用来获取文件名列表。现在,我想使用文件名作为搜索字符串(而不是要搜索的文件)。 我find server/lib -type f -exec basename {} \; | cut -f 1 -d '.'用来获取文件名列表并剥离文件扩展名。 现在,我知道这grep -R --exclude-dir=node_modules <search-string> . -l是我想将每个文件名传递到的内容,但是我不知道如何将它们作为<search-string>参数传递。 其他资讯 我也隐约地意识到,对此的管道grep传递可能会通过find(整个文件列表)如果我要这么做的话,我显然不想这样做,然后告诉我。 另外,(尽管这可能不在此问题的范围之内),因为我将其用作查找任何grep无法为其找到任何文件名的文件名的方法,对于获得这种输出的任何建议将不胜感激 > <the-command> filename1 server/lib/foo.js # where these are the list of files in which it appears test/lib/foo.js filename2 Not Found! #where `filename2` wasn't …

2
查找文件系统中最旧的文件/目录,最大容量为50 TB
我需要在最多50 TB的90 TB文件系统中找到最旧的文件及其关联的目录,然后将它们移动到另一个文件系统。他们必须保留其目录结构,因为目录结构可以识别文件。所以- 一级/二级/三级/(文件) 是结构。我需要移动整个结构-顶级目录中没有任何内容,但是没有它们,我将无法识别文件所属的文件,因为我要查找的所有文件都具有相同的名称。该过程完成后,我应该在原始文件系统中剩下大约40 TB,而在新文件系统中几乎没有任何内容,因为原始文件中最旧的文件现在已经存在。 谢谢!
8 linux  find 

1
我可以告诉查找到不还原初始工作目录吗?
findsudo -u如果初始工作目录对用户不可见,则无法在后面运行时“恢复初始工作目录” 。这导致find总是打印出令人讨厌的“ 权限被拒绝”警告消息: $ pwd /home/myuser $ sudo -u apache find /home/otheruser -writable find: failed to restore initial working directory: Permission denied 阻止查找打印此消息的最佳方法是什么? 一种方法是cd /在运行find之前,更改为find用户可以还原的目录。理想情况下,我只想找到诸如这样的选项,--do-not-restore-initial-working-directory但我想那是不可用的。;) 我主要使用基于RedHat的发行版。
8 linux  find  sudo 

1
为什么在使用此find -execdir {} +(加号)时最终得到4次调用而不是3次调用?
我在这里读到,您可以通过管道传输到commandin 末尾来计数in 的调用次数。-exec command {} +| wc -l 尽管我理解这-execdir是不同的,但是对于find发现的每个匹配子目录,它都会command从其包含的子目录中运行一个调用,如果我在一个子目录中有多个匹配的文件,则不应我最终得出的调用数量等于匹配的子目录的数量,而不是与这些子目录中的匹配文件的数量匹配的调用数量? 当我运行以下命令时,我将以后者结尾: $ find . -name "bob*" -execdir echo {} + | wc -l 手册页execdir command {} +指出应该是前者: 与该-exec操作一样,的+形式-execdir将构建一个命令行来处理多个匹配文件,但是任何给定的调用command都只会列出存在于同一子目录中的文件。 即 我越来越: ./file1inDir1 ./file2inDir1 ./file3InDir2 ./file4InDir3 当我期望这一点时,基于手册页: ./file1inDir1 ./file2inDir1 ./file3InDir2 ./file4InDir3
8 find 

4
如何在有空格的grep输出上执行xargs grep?
我正在基于正则表达式搜索文件,然后尝试在这些文件中搜索内容。例如,我有类似 #Find all C++ files that match a certain pattern and then search them find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>" 我遇到的问题是某些路径中有空格,这会造成混淆xargs。我知道,如果我只是使用find,则可以使用-print0参数(以及上的-0参数xargs)来防止xargs将空格视为定界符。有类似的东西grep吗? 还是我完全以错误的方式解决了这个问题?天真,find要grep以xargs grep对我来说很有意义,但我持开放的态度产生相同的结果的其他方法。
8 shell  grep  find  quoting  xargs 

3
GNU中“启用的功能”是什么意思?
当我find --version与GNU find一起使用时,会得到如下信息: find (GNU findutils) 4.5.9 [license text] Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2) 这些“功能”是什么意思?在中提到了O_NOFOLLOW某种安全措施man find,并且提到了LEAF_OPTIMISATION一种优化方法,可以节省lstat对叶节点的调用。但我无法找到任何东西FTS,D_TYPE或CBO。
8 find  gnu 

6
空字符串何时表示当前目录?
在脚本中,我用于find收集当前目录中的一些文件,如下所示: $ find . -name "*.h" ./foo.h 现在,我希望它只是输出foo.h,不带./前缀。我认为空字符串""表示Shell命令中的当前目录。但这给出了: $ find "" -name "*.h" find: ftsopen: No such file or directory 所以我错了。现在我的问题是何时/如何/在哪里/ ..“空字符串(?)”表示需要文件名或路径名的命令中的当前目录吗?有一个整洁而有启发性的解释吗? 附带的一个问题是,上面的查找是否可以简单地解决,而无需字符串操作la ${parameter#word}或cutor sed?
8 find  filenames 

1
使用“ find…-exec sh -c'...'sh {} +”的find命令如何工作?
@StephaneChazelas针对此问答发布了以下解决方案:使用“ find -exec {} +”遇到麻烦。 $ find . -iname "*.extension" -exec sh -c ' exec <command> "$@" <additional parameters>' sh {} + 这到底是怎么回事?具体来说,最后sh {}做什么?似乎只是为了平息find的-exec命令而已,以便它可以做一些事情,即NOOP。 我可以很容易地放在echo {}那儿,它似乎工作得很好。

2
按修改时间对文件排序
我在这里看到了许多问题和答案,它们使用的构造类似于 list_dir=`ls -t /path/to/dir/` for i in $list_dir; do 要么 ls -t | while read i; do 现在,我知道您不应该在脚本中使用ls,因为它很容易损坏;但我找不到从上次修改到最近修改(反之亦然)的顺序处理文件的更好方法。 我可以使用类似: find . -type f -printf '%T@ %p\n' | sort -n | cut -d ' ' -f 2- | while read i; do... ...但是这仍然会与名称中包含换行符的任何文件一起中断,并且引导起来要难看得多。有没有更好的办法?

2
列出所有比给定时间戳更新的文件并对它们进行排序
我只想列出目录/ tmp 中格式比时间戳新的所有文件(按日期排序)20130207003851。子目录可以省略。 使用SUSE Linux Enterprise Server 11。 输出格式应为 S0002948.LOG Feb 7 03:28 S0002935.LOG Feb 7 05:58 S0002952.LOG Feb 7 09:58 S0002940.LOG Feb 7 11:58 找到/ tmp -newermt“ 2013年2月7日” -ls列出了我想要的文件,但是 如何使用格式20130207003851的时间戳 如何排序输出? 如何只显示文件名和日期。首先是文件名,然后是日期? ps我不想使用touch创建参考文件以进行查找 pss find -newermt "20130207003851" -ls find: I cannot figure out how to interpret `20130207003851' as a …

3
查找软件包管理器未安装的文件
我想获取我的Gentoo Linux系统中所有未由软件包管理器(Portage)安装的文件的列表。这是因为我想保持系统尽可能干净,删除所有无用的文件。 让我告诉你到目前为止我一直在尝试什么。首先,我生成属于Portage跟踪的某些程序包的所有文件的列表: equery files "*" | sort | uniq > portage.txt 然后,我生成系统上所有文件的列表,除了那些我不在乎的文件: find / \( -path /dev -o -path /proc -o -path /sys -o -path /media \ -o -path /mnt -o -path /usr/portage -o -path /var/db/pkg \ -o -path /var/www/localhost/htdocs -o -path /lib64/modules \ -o -path /usr/src -o -path …
8 find  gentoo  symlink 

4
在已安装的ntfs系统上显示最近2天的文件?
显示小于2天的文件的确切命令是什么?我想到了这样的事情: $ find / -mtime -2 ...但是我不确定如何打印找到的文件的日期。我的目标是在已安装的ntfs系统上查找最近几天内新的或已更改的文件。 此外,将结果从最新到最旧的排序将非常有帮助。那可能吗?

4
在当前目录中列出符号链接?
这个问题涉及在当前目录中查找目录。解决方案基本上是: ls -d */ 很好,但是我如何轻松列出符号链接?我是否必须使用类似 find . -xtype l -d 1 (intended to find symlinks max depth 1 - doesn't work) 还是有更简单的方法?请问可以使用ls吗?
8 find  ls  symlink 

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.