如何重命名带有“|”的文件 在他们之中?

Ris*_*huu 1 shell quoting files

我正在使用 Fedora 24。

我尝试了很多不同的方法来做到这一点。我已经在 Windows VM 下尝试过,将有问题的文件夹作为共享文件夹。

我试过使用“重命名”命令。

我试过使用“mv”命令。

我试过在“文件”中重命名它们。

我尝试将文件名设置为带有 inode 的变量,然后重命名。(失去了来源)

26477098 'File | With Pipe.png'
xyz=`ls -i|grep 26477098|sed 's/26477098 //'`
mv "$xyz" File\ --\ With\ Pipe.png
mv: cannot stat 'File | With Pipe.png': No such file or directory
Run Code Online (Sandbox Code Playgroud)

无论我尝试以何种方式执行此操作,我都不断收到“没有这样的文件或目录”错误。

我也尝试过使用它们的 inode 号重命名它们(“mv”文件的 inode 号名称为乱码?

26477098 'File | With Pipe.png'
[user@computer Pictures]$ find . -inum 26477098 -exec mv {} File\ --\ With\ Pipe.png \;
mv: cannot move './File | With Pipe.png' to 'File -- With Pipe.png': No such file or directory
[user@computer Pictures]$ find . -inum 26477098 -print0 | xargs -0 mv -t a.png
mv: failed to access 'a.png': No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我尝试打开该文件,它会显示“未找到图像...”

我在想也许我可以硬链接到 inode,然后尝试删除原始文件,但我想不出办法来做到这一点。

有什么想法吗?

*****************************编辑******************** *****************

[risshuu@centurion Pictures]$ mv "File | With Pipe.png" "File -- With Pipe.png" 
mv: cannot stat 'File | With Pipe.png': No such file or directory
[risshuu@centurion Pictures]$ mv File\ \|\ With\ Pipe.png File\ --\ With\ Pipe.png
mv: cannot stat 'File | With Pipe.png': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我有很多这样的文件,但没有一个对它们起作用。

我刚刚创建了一个带有管道的新文件,将它重命名为没有管道没有问题。肯定还有其他事情发生,因为我无法“抓取”内容或打开文件——我什至无法删除任何文件!是否有任何其他文件验证命令或我可以使用的东西或我可以从文件系统中删除这些文件的方法?

小智 6

您应该能够使用反斜杠转义管道

mv te\|st test
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下有空间

mv first\ \|\ last first_last 
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可以通过用双引号将它们扭曲来转义所有特殊字符。

mv "first | last" first_last
Run Code Online (Sandbox Code Playgroud)