我正在使用 find
搜索文件和目录,这些文件的文件名中有前导破折号:
ls -al
total 0
-rw-r--r-- 1 razhal staff 0 May 22 23:58 -x
drwxr-xr-x 3 razhal staff 96 May 22 23:58 .
drwxr-xr-x 12 razhal staff 384 May 22 17:06 ..
find * -maxdepth 1 -type file
上面给出了以下错误信息:
<块引用>查找:非法选项 -- m
我尝试使用 --
终止选项,但仍然遇到同样的问题:
find * -maxdepth 1 -type file --
奇怪的是,如果文件夹包含一个没有前导破折号的文件,我不会收到任何错误消息:
ls -al
total 0
-rw-r--r-- 1 razhal staff 0 May 22 23:58 -x
drwxr-xr-x 3 razhal staff 96 May 22 23:58 .
drwxr-xr-x 12 razhal staff 384 May 22 17:06 ..
-rw-r--r-- 1 razhal staff 0 May 23 00:03 x
find * -maxdepth 1 -type file
以上返回 x
并且没有错误消息。
我的问题是如何使用 find
查找和列出带和不带前导破折号的文件/目录?
请注意,我真的想使用 find
而不是其他一些命令,例如 xargs
或类似命令。
答案 0 :(得分:1)
使用 .
而不是 *
:
find . -maxdepth 1 -type file
.
指的是您所在的当前文件夹。您也可以使用 ..
代替 .
从父目录进行搜索。
另一种选择是将 ./
放在 *
前面,如下所示:
find ./* -maxdepth 1 -type file
这样它就不会将名称以破折号开头的文件解释为选项。