删除文件名包含不允许字符的文件

Mil*_*vić 3 filesystems files

/tmpdir 我有这个文件名的文件:

.<?php passthru($_GET['cmd']);echo 'm3rg3';?>

我无法通过正常方式删除此文件,并尝试引用此文件名但没有结果。

我接下来应该尝试什么?

Zac*_*ady 6

ls -li看的inode他们删除索引节点用find

[root@server tmp]# ls -li .\<*
16163346 -rw-r--r-- 1 root root 0 Jun 23 12:02 .<?php  passthru($_GET[cmd]);echo 
[root@server tmp]# find . -inum 16163346 -exec rm -i {} \;
rm: remove regular empty file `./.<?php passthru($_GET[cmd]);echo'? y
Run Code Online (Sandbox Code Playgroud)

参考:http : //www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html


jim*_*mij 6

尝试这个:

rm -iv -- .\<\?php\ passthru\(\$_GET\[cmd\]\)\;echo\ m3rg3\;\?\>
Run Code Online (Sandbox Code Playgroud)

将来,当您有非常奇怪的文件名时,请尝试使用 shell glob机制,例如:

ls .*php*
Run Code Online (Sandbox Code Playgroud)

应该是一个好的开始。如果您有许多文件名相似的文件,只需使用任何唯一的常规子字符串

ls .*php*cmd*echo*m3rg3*
Run Code Online (Sandbox Code Playgroud)

最后,Tab如果您使用的 shell 具有完成机制,您可以点击完成文件名。