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或类似命令。