如何处理带前导破折号的文件

时间:2021-05-22 22:09:32

标签: linux shell file find

我正在使用 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 或类似命令。

1 个答案:

答案 0 :(得分:1)

使用 . 而不是 *

find . -maxdepth 1 -type file

. 指的是您所在的当前文件夹。您也可以使用 .. 代替 . 从父目录进行搜索。

另一种选择是将 ./ 放在 * 前面,如下所示:

find ./* -maxdepth 1 -type file

这样它就不会将名称以破折号开头的文件解释为选项。