Answers:
如果给出find
绝对路径作为开始,它将打印绝对路径。例如,要查找当前目录中的所有.htaccess文件,请执行以下操作:
find "$(pwd)" -name .htaccess
或如果您的Shell扩展$PWD
到当前目录:
find "$PWD" -name .htaccess
find
只需将给定的路径添加到该路径中文件的相对路径。
pwd -P
如果您想解析当前目录中的符号链接,Greg Hewgill也建议使用。
pwd -P
。
ls -d -1 $PWD/**/*
但我想find $PWD
也可以(通过bash测试)
find $PWD
很简单。该ls
咒语是复杂而笨重的(除非你它的别名)。find
不依赖于shell glob扩展,因此可以在任何shell中工作。find
更加灵活,我可以递归地列出所有文件或所有目录,或者我想要列出所有xml文件或上周更改的所有文件。使用一切都是可能的find
,但并非容易ls
。
find "`pwd`" -name .htaccess
由于目录名称中的空格,我不得不使用
readlink -f filename
给出完整的绝对路径。但是如果文件是符号链接,则将获得最终的解析名称。
realpath
改用
brew install coreutils
,则可执行文件的安装方式为/usr/local/opt/coreutils/libexec/gnubin/readlink
将其用于目录(在bash中需要/
after **
,以将其限制在目录中):
ls -d -1 "$PWD/"**/
这用于直接在当前目录下的文件和目录,其名称包含一个.
:
ls -d -1 "$PWD/"*.*
这一切:
ls -d -1 "$PWD/"**/*
取自此处 http://www.zsh.org/mla/users/2002/msg00033.html
在bash中,**
如果启用,则是递归的shopt -s globstar
。
该$PWD
是由马修上方一个不错的选择。如果要查找仅打印文件,则还可以添加-type f选项以仅搜索普通文件。其他选项是“ d”,仅用于目录等。因此,在您的情况下,它将是(如果我仅搜索具有.c ext的文件):
find $PWD -type f -name "*.c"
或者如果您想要所有文件:
find $PWD -type f
注意:您不能为上述命令创建别名,因为当bash设置别名时,$ PWD会自动完成到您的主目录中。
如果给find命令提供绝对路径,它将以绝对路径吐出结果。因此,如果要在Ken目录中键入:
find /home/ken/foo/ -name bar -print
(而不是相对路径find . -name bar -print
)
您应该得到:
/home/ken/foo/bar
因此,如果您想要an ls -l
并让其返回绝对路径,则可以告诉find命令对找到的内容执行an ls -l
。
find /home/ken/foo -name bar -exec ls -l {} ;\
注意:{}
和之间有一个空格;
您将获得如下内容:
-rw-r--r-- 1 ken admin 181 Jan 27 15:49 /home/ken/foo/bar
如果不确定文件在哪里,可以随时更改搜索位置。只要搜索路径以“ /”开头,您将获得绝对路径作为回报。如果您要搜索的位置(例如/)将出现很多权限被拒绝的错误,那么我建议您重定向标准错误,以便您可以实际看到查找结果:
find / -name bar -exec ls -l {} ;\ 2> /dev/null
(2>
是Borne和Bash Shell的语法,但不适用于C Shell。它也可以在其他Shell中使用,但我只确定可以在Bourne和Bash中使用)。
ls
进程-exec ls -ld {} +
。(您可能希望-d
没有ls
列表目录内容)。或者更好,使用发现的内置ls
有find ... name bar -ls
。另外,每个命令一个arg的语法错误:您必须在shell中引用分号,所以是{} \;
。
只是替代
ls -d "$PWD/"*
查明*
是壳扩展,所以
echo "$PWD/"*
会做同样的事情(不能用-1
换行符而不是空格来分隔的缺点)。
-1
行分隔?
这对我有用。但是它没有按字母顺序列出。
find "$(pwd)" -maxdepth 1
此命令按字母顺序列出,也列出隐藏文件。
ls -d -1 "$PWD/".*; ls -d -1 "$PWD/"*;
find /home/ken/foo/bar -exec ls -ld $PWD/{} \;