De manière récursive décompresser des fichiers, puis supprimez le fichier d'origine, laissant les fichiers décompressés en place de la coquille
Je n'ai jusqu'à présent trouvé comment utiliser recherche récursive de décompresser tous les fichiers:
find . -depth -name `*.zip` -exec /usr/bin/unzip -n {} \;
Mais, je ne peux pas comprendre comment faire pour supprimer les fichiers zip l'un après l'extraction. L'ajout de rm *.zip dans un -un -exec finit par suppression de la plupart des fichiers zip dans chaque répertoire, avant ils sont extraits. La tuyauterie par l'intermédiaire d'un script contenant la commande rm (avec -je l'ai activé pour les tests) causes trouve de ne pas trouver tout *.fermetures à glissière (ou du moins c'est ce qu'il se plaint). Il y a, bien sûr, les espaces dans de nombreux noms de fichiers, mais à ce point syntaxing dans un sed commande à ajouter _s'est un peu au-delà de moi. Merci pour votre aide!
recursively
, zip dans le zip? Pour des tâches complexes, personnellement, je ferais un script d'aide (dire unzip-and-rm.sh
) et l'option-exec de ce script.Je m'excuse si je n'étais pas assez claire. L'arborescence de répertoire va au moins six ou sept niveaux vers le bas avec le zip des fichiers aux niveaux les plus profonds. Chaque fichier zip contient deux fichiers d'autres, et je veux garder l'autre pour les fichiers intacts, mais ensuite supprimer le fichier zip. Mon premier essaie ici était simplement de brancher le
unzip-and-rm
dans un script et -exec, mais il ne parvient pas à trouver tout les fichiers zip, et je soupçonne que c'est dû à la à la les espaces dans les noms de fichiers.Je ne sais pas pourquoi
it fails to find any zip files
, je ne peux pas le croire, pourrait vous coller la ligne de commande?S'il vous plaît, jetez un oeil à la réponse à stackoverflow.com/a/51841035/2457251 si vous voulez plus de connaissances. Par exemple, vous pouvez ajouter la commande
rm $f
, mv $f
à l' .sh de fichier ou ajouter toute autre commande, si vous le souhaitez.OriginalL'auteur Ben | 2011-04-08
Vous devez vous connecter pour publier un commentaire.
avez-vous essayé:
ou
ou de l'exécution d'un second trouver après le décompresser un
find: paths must precede expression: /usr/bin/unzip
.veuillez essayer les autres options
Ah! La deuxième option fonctionne parfaitement.
-delete
, comment je n'ai jamais su vous! L'un des principaux critères que bien sûr j'ai oublié de mentionner, c'est que la décompression et la suppression de devrait arriver dos-à-dos, que le lecteur n'est pas assez grand pour décompresser tout et de retourner ensuite à supprimer. Merci beaucoup!Avertissement: la troisième option ne fonctionne PAS lorsque dans les fichiers zip sont les autres fichiers zip.
-1 avertissement cette commande va extraire toutes les fermetures à glissière dans votre travail dir. Il serait mieux si les zips ont été laissés dans le chemin qu'ils ont été trouvés dans.
OriginalL'auteur ggiroux
thx pour la 2ème commande avec -supprimer! m'a beaucoup aidé..
juste 2 (peut-être utile) remarques de mon côté:
-a utiliser '.zip' au lieu de `.zip` sur mon système debian
-utilisation -execdir au lieu de -exec > il est extrait de chaque fichier zip à l'intérieur de son dossier, sinon vous vous retrouvez avec tous les extraits contenus dans le dossier vous avez appelé le trouver cmd.
trouver . -la profondeur -name '*.zip' -execdir /usr/bin/décompressez -n {} \; -supprimer
THX & Cordialement,
Nord
(i)name
clause, ceux-ci doivent être placées entre parenthèses:find \( -iname "*.zip" -o -iname "*.7z" \) -execdir 7z x {} \; -delete
. Notez également queiname
peut-être mieux qu'elle correspond à.ZIP
.OriginalL'auteur Nordmann
Comme mentionné ci-dessus, cela devrait fonctionner.
trouver . -la profondeur -name '*.zip' -execdir décompressez -n {} \; -supprimer
Cependant, noter deux choses:
Une solution plus sûre peut-être pour déplacer les fichiers en suivant la décompresser dans un répertoire distinct que vous pouvez corbeille lorsque vous êtes sûr que vous avez extrait tous les fichiers avec succès.
OriginalL'auteur John D.
Décompresser des archives en sous répertoire basé sur le nom de fichier (../file.zip -> ../fichier/..):
OriginalL'auteur cmcginty
J'ai un répertoire de remplissage avec zip des fichiers csv. Les processus externes sont de l'écriture de nouveaux fichiers compressés à elle souvent. Je souhaite en vrac décompressez-le et retirez les originaux, comme vous le faites.
À faire que j'ai utiliser:
Il fonctionne par la recherche et le développement de toutes les zip les fichiers actuellement dans le répertoire. Plus tard, après avoir fini il y a potentiellement de nouveaux de nouveaux fichiers décompressés mixtes là aussi qui ne sont pas à être supprimé encore.
Donc j'ai supprimer par trouver avec succès décompressé *.les fichiers csv, et à l'aide de sed pour régénérer les noms des fichiers d'origine de la suppression qui est ensuite transmis à rm via la commande xargs.
OriginalL'auteur Minkymorgan