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

Linux 如何处理带前导破折号的文件,linux,shell,file,find,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 上面给出了以下错误消息: ls -al to

我正在使用
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
上面给出了以下错误消息:

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
查找:非法选项--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
或类似命令。

使用
而不是
*

find . -maxdepth 1 -type file
指您所在的当前文件夹。您也可以使用
而不是
从父目录进行搜索

另一个选项是将
/
放在
*
前面,如下所示:

find ./* -maxdepth 1 -type file

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

Find通常提供要搜索的目录名,而不是像您这样的文件名。。。使用
而不是扩展到当前目录中的所有文件的通配符?不确定为什么会关闭此通配符,因为我仍然无法处理带有前导破折号的文件或目录?如注释中建议的那样,仅使用“.”似乎也行得通,但我还有一个问题,由于定位的文件名也包含
/
部分,我只想获取文件名,这样我就可以执行类似于
find./*-type file-exec mv{}temp{}的操作这对你有用吗<代码>查找-printf“%f\n”| xargs-I{}mv{}temp{}
就像我说的那样,我只想使用find,不想使用其他命令,如xargs或类似命令。