FAIT FUN: Si vous utilisez Archiver Manager et extraire un .tar.gz afin que vous ayez "la structure de répertoire" non infensé, vous obtiendrez un Tarbomb .
tar -ztf
répertorie tous les fichiers et répertoires dans un fichier tar. Existe-t-il un moyen de répertorier tous les fichiers d'un fichier tar, sans la structure de répertoire?
Je ne vois pas un moyen de le faire de la page d'homme, mais vous pouvez toujours filtrer les résultats. Ce qui suit suppose qu'aucune nouvelle lignes dans vos noms de fichiers:
tar tzf your_archive | awk -F/ '{ if($NF != "") print $NF }'
Comment ça marche
En définissant le séparateur de champ sur /
, le dernier champ awk
sait sur ($NF
) est soit le nom du fichier si elle traite un nom de fichier ou vide s'il s'agit d'un nom de répertoire (tar
ajoute une barre oblique de fin aux noms de répertoire). Donc, nous disons fondamentalement awk
d'imprimer le dernier champ s'il n'est pas vide.
En supposant qu'aucun des noms de fichier ne contienne de nouvelles lignes:
tar -tf foo.tar | sed -e 's#.*/##' -e '\#.#!d'
La première commande sed supprime tout avant le dernier /
Sur une ligne, de sorte que seule la partie de nom de fichier soit imprimée. La deuxième commande supprime les lignes qui sont maintenant vides, c'est-à-dire les lignes terminées dans un /
, quels sont des répertoires.
Avec pax
(la commande POSIX à lire tar
fichiers):
pax -'s@.*/@@' < file.tar
(qui répertorie tous les fichiers quel que soit leur type, y compris des annuaires).