【问题标题】:What happens with a comma(,) on a MV command?MV 命令上的逗号(,)会发生什么?
【发布时间】:2022-01-19 08:15:28
【问题描述】:

我在 mv 命令的末尾用逗号“加粗”

mv 路径/文件.,

文件似乎在某处消失在以太中。 'find' 什么也没找到。

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    ...不同,.,这个名字没有特殊含义,所以文件就在那里,实际上命名为.,

    验证文件是否存在:

    ls -l .,
    

    您只需将参数反转为 mv 即可将其移回:

    mv ., path/file
    

    【讨论】:

    • UNIX 真的很奇怪:ls ., 确实显示了文件,但 ls | fgrep ".," 没有,因为文件名以点开头,这使它成为隐藏文件。
    • @Dominique True。这并不是说文件., 有任何特殊性。只是ls 命令默认不会显示以. 开头的文件。 ls -a | fgrep '.,' 会显示它。
    • 哦,我并不奇怪我需要输入 -a 才能在 ls -a | fgrep ... 中显示它,但我很惊讶我不需要需要输入 @987654336 @ 在ls ., 中显示它:我希望ls ., 的结果为空:-)
    • @Dominique :-) 不,如果您将文件明确命名为 ls,它不会隐藏它。
    【解决方案2】:

    Linux ls 命令隐藏以点开头的文件。如果您只键入ls,则不会显示您的主目录中的所有文件或目录,例如.ssh.bashrc。要获取所有文件,您必须提供 ls -a 选项( all )。

    您使用mv path/file ., 移动所做的只是将源文件移动到目标.,,这意味着您的文件正是这个名称。通过输入ls -a 甚至`ls -l .',您可以将其视为所有其他普通文件。

    您只需使用mv ., <destination_path/destination_name> 再次复制或移动它。

    你说:“'find'什么也没找到。”

    这可能是一个错误的观察,因为find 会看到所有文件,即使是那些以点开头的文件。

    find -maxdepth 1 | grep ',' 给出: ./.,

    也许你搜索的地方不对?

    【讨论】:

    • 我的发现(当然)是在寻找原始文件名。
    【解决方案3】:

    我也做了同样的事情,我很容易找到“.”:

    ls -ltra | grep ","
    -rwxrwxrwx 1 user1 user1          0 Jan 19 10:09 .,
    

    这笔交易是在ls 命令中使用a 开关:这也显示文件,以点开头(实际上在 UNIX/Linux 中通常不可见),正如您从手册页中看到的那样:

    DESCRIPTION
       List  information  about the FILEs (the current directory by default).  
    Sort entries alphabetically if none of
       -cftuvSUX nor --sort is specified.
    
       Mandatory arguments to long options are mandatory for short options too.
    
       -a, --all
              do not ignore entries starting with .
    

    哦,你需要查看path目录的父目录:-)

    【讨论】:

    • 谢谢。在我没有想到 . 作为文件名之前,从来没有管理过这样的事情。文件(和信仰)已恢复。
    • @Hpoonis:很高兴为您提供帮助。如果我的回答有用,请点赞和/或接受。
    • 我已经标记了第一个响应,因为这是我第一次使用/看到的响应。 ..而且(显然)我还不够好,无法投票赞成或反对。
    猜你喜欢
    • 1970-01-01
    • 2013-08-21
    • 2022-01-25
    • 2014-10-27
    • 2013-01-18
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多