8

我在此存储库中进行了搜索,但没有找到任何类似的问题,或者可能是我的搜索不正确。

我在我的客户环境中遇到了这个问题,一个自定义应用程序正在使用环境变量“$SRCDIR”和“$HOME”创建目录以及创建这些目录的目录,它本身就是 HOME 目录路径。如果我说rm -rf $HOME,那么当前目录 $HOME 下的所有文件和子目录都将被删除。如何删除这些不需要的目录。

-rw-r--r--  1 grp domain users 418051450 Apr 18 18:09 $SRCDIR
-rw-r--r--  1 grp domain users 418051450 Apr 18 18:09 $HOME

还有一些目录是垃圾字符,如下例所示。

-rwxr-xr-x  1 grp domain users  0 Feb  7  2106 ??????w?O???*????_6??t??Ó¡?>?tP??Ñ?|?C

如何删除它们?

4

7 回答 7

20

对于垃圾名称,最简单的方法是构造一个只能捕获它们的通配符。选择名称的可读部分(例如_6子字符串)并将其包装在星号中。首先尝试一下:

ls *_6*

如果它只列出垃圾名称,请继续删除它:

rm *_6*

如果它还列出了其他名称,请尝试使通配符更具体,在名称中使用其他可读字符:

ls *w*_6*tP*N*x*

继续,直到您找到一个只匹配不需要的文件的通配符。

于 2012-06-14T06:40:37.350 回答
14

确定必要文件/文件夹的 inode 数量:

# ls -ila 
14549980 drwxr-xr-x  3 root root       4096 Mar  5 20:45 ">?<

并将其传输到rm

find . -inum 14549980  -exec rm -ir {} \;
于 2016-03-18T05:11:03.613 回答
12

如果你创建一个像 --rw-rr-- 这样的目录。要删除此文件,请执行以下操作 rm -rf ./--rw-r-r--

于 2012-12-27T15:48:26.167 回答
4

在 Linux 中尝试 zsh shell

[root@rhel5-8 ~]# zsh
[root@rhel5-8]~

然后使用制表符完成删除该目录。

或者如果使用 bash

[root@rhel5-8 ~]# cd "??????w?O???*????_6??t??Ó¡?>?tP??Ñ?|?C???????>?̤-???y?X???N?x??H?????Ч)?n?5‌​??{@?~]?" 

进入那个目录

于 2012-06-14T09:04:39.613 回答
2

只需避开美元符号。试试这样-

rm -rf \$HOME

?符号也一样。

于 2012-06-14T06:11:41.127 回答
2

您可以尝试 rm -rf '$HOME' '$SRCDIR' ,因为单引号会阻止 shell 变量的扩展。尝试使用 bash 和 ksh。

于 2014-11-21T09:43:28.673 回答
0

您可以使用c程序来避免 shell/转义问题。看看这个问题的答案。

于 2012-06-14T06:41:33.423 回答