Linux/UNIX:移动以短划线开头的文件
时间:2020-01-09 10:42:30 来源:igfitidea点击:
如何移动以短划线开头的文件(例如,"/home/you /-filename.txt"或者" /home/you/-filename.txt")?
如何复制名称以破折号/连字符(-
)开头的文件?
许多元字符(例如分号,空格,反斜杠,美元符号,问号和星号)是在Linux和类Unix操作系统下被解释为shell命令的字符。
例如,"-"或者"-"(破折号或者连字符)解释为传递给命令的选项。
尝试使用以下建议来移动(mv)或者复制(cp)这些文件。
这些选项不限于mv命令或者cp命令。
在处理以破折号("-"或者"-")开头的文件名时,任何命令都可以使用提示。
从破折号开始移动文件
语法如下:
cp -- source dest cp [option] -- source dest
我们使用--
来使Linux和Unix命令停止解析shell命令行选项。
现在,让我们看一些例子。
创建一个测试文件
执行以下命令:
cd /tmp/ > '-foo.txt' > '--bar.txt'
列出以破折号开头的文件
尝试列出它们,执行:
ls -l *.txt
您将得到如下错误:
ls: unrecognized option '--bar.txt' Try `ls --help' for more information.
要分隔选项列表,请使用--
,即执行以下ls命令:
ls -l -- *.txt
cp和mv命令
当文件名以"-"或者"-"开头时,请使用以下语法复制或者移动文件:
cp -- '--bar.txt' /path/to/dest cp -- '-test.doc' /home/Hyman/backups/test.doc
或者
cp -v -- '--bar.txt' /path/to/dest
要移动文件:
mv -- '--bar.txt' /path/to/dest
或者
mv -v -- '--bar.txt' /path/to/dest
Unix和Linux复制文件以短划线开头
"-"或者"-"被视为命令行选项的一部分。
因此,您不能复制,列出,删除或者移动以这些字符开头的任何文件。
简而言之,语法如下:
cp options -- '--filename' /dest mv options -- '--filename' /dest
"-"分隔选项列表。
以后的参数(如果有的话)将被视为操作数,即使它们以or
开头。
这适用于所有Linux/Unix/macOS/* BSD命令,例如rm,cp,mv,ls,ln等:
command -- 'file' command [options] -- 'file' rm -- '--filename' rm -fr -- '-dirname' rmdir -- '--dirname'
如何将find命令用于相同目的
语法为:
find /dir/to/search -maxdepth 1 -name '--filename' -delete
提示:处理以破折号(-
)开头的文件名
您可以通过以./
(点斜杠)开头的文件名来隐藏命令中的破折号。
例如,尝试使用rm命令删除名为-filename.txt
的文件:
> '-filename' rm -filename # will get an error # rm ./-filename