Probleme aufgetreten:
`执行zip命令碰到"Argument list too long"`
Intuitive Problembeschreibung:
Bei Verwendung von cp-, mv-, rm-, zip- und anderen Befehlen unter Linux tritt häufig der Fehler "Argumentliste zu lang" auf. Dies liegt hauptsächlich daran, dass die Parameter dieser Befehle zu lang sind, dh zu viele Dateien vorhanden sind.
Lösung:
# 方法一:
find dir/ -name "*.bin" | xargs -i zip aa.zip {
}
# 方法二:
find dir/ -name "*.bin" -exec zip aa.zip {
} \;
Wo dir/
ist die Adresse des Quellordners?
"*.bin"
Ist der Name der Quelldatei;
xargs
Ein Filter für die Parameter , um andere Befehle vorbei in dem Befehl in Methode ist auch ein Werkzeug zum Kombinieren mehrerer Befehle, der Inhalt -i
wird xargs
zugewiesen werden {}
.
Der -exec
spätere Parameter von Verfahren II wird hinter dem Befehl -exec
bis zum ;
Beenden ausgeführt, da jedes System ein anderes Semikolon hat, daher ist das \
Escape, d. H. ;\
Zusätzlich während der Operation {}
, find
das Ergebnis des Ersetzungsbefehls.
In ähnlicher Weise lauten die Befehle für rm und cp wie folgt:
# 删除文件夹下以bin结尾的文件
# 方法一:
find dir/ -name "*.bin" | xargs -i rm {
}
# 方法二:
find dir/ -name "*.bin" -exec rm {
} \;
# 拷贝文件夹下以bin结尾的文件到目标文件目录下
# 方法一:
find dir/ -name "*.bin" | xargs -i cp {
} dir1
# 方法二:
find dir/ -name "*.bin" -exec cp {
} dir1 \;
Problem
Die obige Methode löst das Problem, aber die Verarbeitungsgeschwindigkeit ist für eine große Anzahl von Dateien immer noch langsam
Referenz für diese Lösung: "Argumentliste zu lang" beim Ausführen von zip-, cp-, rm- und anderen Befehlen unter Linux