查询inode
:
代码如下
[oracle@test]$
ll
-i
total
14694452
17956913
-rw-r–r–
1
oracle
oinstall
0
Jan
18
20:24
1?.txt
2.
修改测试文件名:
代码如下
find
.
-inum
17956913
-exec
mv
{}
file.txt
3.
删除乱码文件
代码如下
[oracle@test]$
ll
-i
total
14694452
….
-rw-r–r–
1
oracle
oinstall
0
Jan
18
20:24
file.txt
记录:删除乱码的文件可使用
find
.
-inum
17956913
-exec
rm
{}
对于文件夹,尤其是非空的文件夹,上面的方法就不适用了,要用到另外的参数来实现,首先相同的是查看乱码文件夹的节点号
代码如下
ls
-i
18612483
瑗块.?..
-
Thank
you,
Love(128kbps)
2011.06.22
接下来使用find命令删除
代码如下
find
-inum
18612483
-exec
rm
-rf
{}
find:
./瑗块.?..
-
Thank
you,
Love(128kbps)
2011.06.22:
No
such
file
or
directory
虽然提示我们找不到此文件或文件夹,但其实已经表明删除了。-exec作用是查找后执行命令,其中{}代表前面查询到的结果,空格+是结束符,其它就不说了。-exec后可以跟任何常用命令,因此这方法不但适用于文件夹,文件也可以。
小技巧
怎么批量删除呢?其实很简单,用for就好了
代码如下
文件
for
n
in
22413315
22413314do
find
-inum
$n
-deletedone
文件夹
for
n
in
22413315
22413314do
find
-inum
$n
-exec
rm
-rf
{}
done
$n是变量名,与for后面定义的一致,其它没啥好说的,适用其它 *** 作。
注:更多精彩教程请关注三联电脑教程栏目,三联电脑群:189034526欢迎你的加入
当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。
但是我们知道每个文件都有一个
i
节点号,我们可以考虑通过
i
节点号来管理文件。
首先,我们要取得文件的
i
节点号。这个可以通过ls命令的-i
选项获得得,也可以通过ll
-i
来获得。
第二步,使用find命令将文件名传递给rm命令。
e.g:删除节点为12345的乱码文件夹可以使用如下命令:
find
./
-inum
12345
-exec
rm
{}
-rf
/
注意/前面的空格不能少,少了就会报错。
有桌面吗?有的话在桌面环境下删除。没有的话,在shell下通过管道直接删除:
假设在 /tmp 下存在乱码目录 x
执行 ls /tmp|nl -ba 查看输出中乱码目录x在第几行,假设在第2行
接着 执行 ls/tmp|sed -n '2'p|xargs rm -rf
搞定。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)