Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Beispiel für die Verwendung von Inode zum Löschen bestimmter Dateien unter Linux

Beispiel für die Verwendung von Inode zum Löschen bestimmter Dateien unter Linux

黄舟
黄舟Original
2017-10-14 11:03:061871Durchsuche

Der Inode der Datei definiert die Größe der Datei, den Besitzer und andere Eigenschaften der Datei. Jede Datei und jedes Verzeichnis hat eine eigene eindeutige Inode-Nummer. Der folgende Artikel stellt Ihnen daher hauptsächlich die relevanten Informationen zur Verwendung von Inode zum Löschen bestimmter Dateien unter Linux vor. Lassen Sie uns gemeinsam einen Blick darauf werfen.

Vorwort

Wie wir alle wissen, stoßen Sie unter Linux manchmal auf Dateien mit verstümmelten Namen oder einigen speziellen chinesischen Schriftzeichen. Das Löschen anhand des Dateinamens ist schwierig.

Gleichzeitig muss jede Datei in Linux einen eigenen eindeutigen Inode-Wert haben. Zu diesem Zeitpunkt können Sie Dateien mit abnormalen Dateinamen über Inode löschen.

arbeitet im Allgemeinen mit Dateien, die den folgenden ähneln:


[root@server tmp]# ll 
 
总用量 61404-rw-r--r-- 1 root root 0 6月 16 14:58 ? 
 
-rw-r--r-- 1 root root 0 6月 19 12:29 ?? 
 
-rw-r--r-- 1 root root 0 6月 21 14:53 ???3kqU-rw-r--r-- 1 root root 0 6月 21 14:53 ?6;?Xf??mA???9???T֙ 
 
-rw-r--r-- 1 root root 0 6月 19 12:29 9y??????sy?z?D?l???I?MO???8z????@]9??U@?XlAI]?k

Gründe für die Generierung solcher Dateien:

1. Netzwerkanomalie beim Hochladen von Dateien

2. Bestimmte von Windows erstellte Dateinamen

kann unter Linux 3 nicht normal erkannt werden. Chinesische Sonderzeichen können nicht erkannt werden

Die Lösung lautet wie folgt:

1. Fragen Sie die Inode-Werte dieser Dateien ab

ll -i


[root@server tmp]# ll -i 
 
总用量 6140415206100 -rw-r--r-- 1 root root 0 6月 16 14:58 ?15206090 -rw-r--r-- 1 root root 0 6月 19 12:29 ??15206092 -rw-r--r-- 1 root root 0 6月 21 14:53 ???3kqU15206233 -rw-r--r-- 1 root root 0 6月 21 14:53 ?6;?Xf??mA???9???T֙ 
 
15206235 -rw-r--r-- 1 root root 0 6月 21 14:53 A??K?

Oben ist die Zahl ganz links der Inode-Wert der entsprechenden Datei. Der Befehl rm kann jedoch nicht zum direkten Löschen der Datei verwendet werden

2 .Anormale Dateien löschen

Unter normalen Umständen sollten Sie jedoch vorsichtig sein, wenn Sie vorher einige Tests durchführen Mit der Operation gibt es keine derartigen verstümmelten Zeichen.

Es gibt mehrere Methoden:

Erstellen Sie zuerst die erforderlichen Dateien


[root@zstest1 tmp]# cd /tmp 
 
[root@zstest1 tmp]# touch aaa bbb ccc ddd eee 
 
[root@zstest1 tmp]# ll -i 
 
总用量 01442581 -rw-r--r-- 1 root root 0 9月 22 15:00 aaa1442582 -rw-r--r-- 1 root root 0 9月 22 15:00 bbb1442583 -rw-r--r-- 1 root root 0 9月 22 15:00 ccc1442584 -rw-r--r-- 1 root root 0 9月 22 15:00 ddd1442585 -rw-r--r-- 1 root root 0 9月 22 15:12 eee
(1) Verwenden Sie den Löschparameter, der mit „find“ geliefert wird, um AAA-Dateien zu löschen



[root@zstest1 tmp]# find ./* -inum 1442581 -delete 
 
[root@zstest1 tmp]# ll -i 
 
总用量 0 
 
1442582 -rw-r--r-- 1 root root 0 9月 22 15:00 bbb 
 
1442583 -rw-r--r-- 1 root root 0 9月 22 15:00 ccc 
 
1442584 -rw-r--r-- 1 root root 0 9月 22 15:00 ddd 
 
1442585 -rw-r--r-- 1 root root 0 9月 22 15:12 eee
(2) Verwenden Sie den mit find gelieferten Parameter -exec in Kombination mit dem Befehl rm, um die BBB-Datei zu löschen (Löschen bestätigen)



[root@zstest1 tmp]# find ./* -inum 1442582 -exec rm -i {} \; 
 
rm:是否删除普通空文件 "./bbb"?y 
 
[root@zstest1 tmp]# ll -i 
 
总用量 0 
 
1442583 -rw-r--r-- 1 root root 0 9月 22 15:00 ccc 
 
1442584 -rw-r--r-- 1 root root 0 9月 22 15:00 ddd 
 
1442585 -rw-r--r-- 1 root root 0 9月 22 15:12 eee
(3) Verwenden Sie die mit „find“ gelieferten Parameter „-exec“ und kombinieren Sie sie mit dem Befehl „rm“, um die CCC-Datei zu löschen (ohne Löschbestätigung)



[root@zstest1 tmp]# find ./* -inum 1442583 -exec rm -f {} \; 
 
[root@zstest1 tmp]# ll -i 
 
总用量 0 
 
1442584 -rw-r--r-- 1 root root 0 9月 22 15:00 ddd 
 
1442585 -rw-r--r-- 1 root root 0 9月 22 15:12 eee
(4) Verwenden Sie find und xargs, um die ddd-Datei zu löschen (-i kann nicht verwendet werden. Parameter zum Bestätigen des Löschvorgangs)



[root@zstest1 tmp]# find ./* -inum 1442584 |xargs rm -f 
 
[root@zstest1 tmp]# ll -i 
 
总用量 0 
 
1442585 -rw-r--r-- 1 root root 0 9月 22 15:12 eee
(5) Verwenden Sie die rm-Befehl zum Löschen der angegebenen Datei (der vom Suchbefehl gefundene Dateiname)



[root@zstest1 tmp]# rm `find ./* -inum 1442574` 
 
rm:是否删除普通空文件 "./eee"?y 
 
[root@zstest1 tmp]# ll 
 
总用量 0 
 
# 使用find命令的-inum选项确认文件名 
 
[root@zstest1 tmp]# touch fff 
 
[root@zstest1 tmp]# ll -i 
 
总用量 01442574 -rw-r--r-- 1 root root 0 9月 22 15:38 fff 
 
[root@zstest1 tmp]# find ./* -inum 1442574 
 
./fff

Um es zusammenzufassen:

Die oben genannten verschiedenen Löschmethoden werden im Allgemeinen alle durchgeführt, indem der Inode-Wert der Datei angegeben wird, die Option -inum des Befehls find verwendet wird, um den Dateinamen zu bestätigen, und dann übergeben wird zum Löschen an den rm-Befehl


Fertig, hahaha

Zusammenfassung

Das obige ist der detaillierte Inhalt vonBeispiel für die Verwendung von Inode zum Löschen bestimmter Dateien unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn