在我们的一台服务器 (IBM AIX) 中,我们在路径 /data/1002/ 中有一个文件,我们无法使用“rm”命令删除或删除该文件。我们得到的错误信息是“rm:S1208001.002:路径名中的文件或目录不存在”。
使用“-f”选项,没有显示错误消息,但文件仍然存在。
该文件的字节大小为“0”,当我使用“touch S120801.002”命令时,我在该目录中看到两个文件名相同的文件。
目录列表如下:
$ ls -l total 56
-rwxrwxrwx 1 oracle dba 0 Feb 09 11:57 S1208001.002
drwxrwxrwx 4 nobody dba 24576 Feb 09 13:36 backup
Run Code Online (Sandbox Code Playgroud)
我如何删除这个虚假的 fie?
谢谢。
更新 1
使用touch命令后,目录列表如下:
$ ls -l total 56
-rwxrwxrwx 1 oracle dba 0 Feb 09 11:57 S1208001.002
-rwxrwxrwx 1 oracle dba 77790 Feb 09 14:30 S1208001.002
drwxrwxrwx 4 nobody dba 24576 Feb 09 13:36 backup
Run Code Online (Sandbox Code Playgroud)
听起来这个文件名可能包含一个不可打印的字符。这将解释“触摸”制作不同的文件。
尝试类似的东西
ls -b
Run Code Online (Sandbox Code Playgroud)
在目录里看看是不是这样?
然后你应该能够做这样的事情:
rm -i S*2
Run Code Online (Sandbox Code Playgroud)
即使带有隐藏字符,它也应该提示您输入文件。
或者,您可以使用 find 来执行此操作...
find . -name S\*2 -exec /bin/rm -i {} \;
Run Code Online (Sandbox Code Playgroud)
应该提示您输入文件...我不知道 AIX 的“查找”语法是否异常,因此这可能不起作用,但是“rm -i”部分应该让您在命令错误时中止命令。