Afficher le chemin complet (chemin absolu) d'un fichier dans un répertoire sous Linux Bash

introduction

Ceci est mon premier message, donc il ne sera peut-être pas possible d'y accéder, mais merci. N'hésitez pas à commenter s'il y a des points étranges ou des améliorations.

Aperçu

Cet article présente une commande (script) qui affiche le chemin complet (chemin absolu) d'un fichier dans un répertoire en utilisant Bash dans un environnement Linux général (en supposant ici un système Debian).

Motivation

Je l'ai fait parce que j'avais besoin du chemin complet du fichier lors du téléchargement du fichier dans la console Google Compute Engine (GCE).

spécification

Nom de la commande

Dans lf, les mêmes fichiers que ceux affichés par "ls" sont affichés dans le même ordre avec le chemin complet. lfa affiche les mêmes fichiers que ceux affichés par "ls -a" dans le même ordre avec le chemin complet. Autrement dit, le fichier de points est également affiché. Dans lft, les mêmes fichiers que ceux affichés par "ls -t" sont affichés dans le même ordre avec le chemin complet. Autrement dit, les heures de mise à jour sont affichées dans l'ordre chronologique.

Spécifications d'entrée

Vous permet de spécifier plusieurs noms de fichier (chemins de fichier) et noms de répertoire (chemins de répertoire) dans les arguments de commande en entrée. Peu importe qu'il s'agisse d'un chemin relatif ou d'un chemin absolu. Si le répertoire n'est pas inclus, il est supposé être dans le répertoire courant. Il ne recherche pas à partir de la variable PATH, etc. Le glob n'est pas contrôlé par le côté commande.

Spécifications de sortie

Il traite dans l'ordre du nom du fichier d'entrée et du nom du répertoire, et s'il s'agit d'un répertoire, affiche le chemin complet de tous les fichiers de ce répertoire vers la sortie standard. S'il ne s'agit pas d'un répertoire, imprimez le chemin complet du fichier vers la sortie standard.

La gestion des erreurs

Si le chemin spécifié dans l'argument n'existe pas, une erreur est générée.

la mise en oeuvre

L'implémentation a été écrite à la fin de ~ / .bashrc. Si vous ne pouvez pas utiliser readlink, utilisez la ligne suivante dans les commentaires. Je ne pense pas que "--color = auto" soit nécessaire, vous pouvez donc le supprimer.

~/.bashrc



function _lsfp () 
{ 
    local dir file;
    if [[ -d $1 ]]; then
        dir=$(cd "$1";pwd);
        ls --color=auto -1 $2 "$1" | while read file; do
            echo "$dir/$file";
        done;
    elif [[ -e $1 ]]; then
         readlink -f "$1"
#         echo "$(cd $(dirname "$1");pwd)/${1##*/}";
    else
        echo "'$1' is not found." >&2;
    fi
}

function lsfp () 
{ 
    local arg;
    [[ $# -eq 0 ]] && _lsfp "$(pwd)" || for arg in "$@";
    do
        _lsfp "$arg";
    done
}

function lsfpa () 
{ 
    local arg;
    [[ $# -eq 0 ]] && _lsfp "$(pwd)" -a || for arg in "$@";
    do
        _lsfp "$arg" -a;
    done
}

function lsfpt () 
{ 
    local arg;
    [[ $# -eq 0 ]] && _lsfp "$(pwd)" -t || for arg in "$@";
    do
        _lsfp "$arg" -t;
    done
}

alias lf='lsfp'
alias lfa='lsfpa'
alias lft='lsfpt'

tester

$ cd ~/
$ source ./.bashrc
$ lf
$ lfa
$ lft
$ lf ~/

Épilogue

Bash est très pratique. Je vais l'utiliser de différentes manières à partir de maintenant. Merci d'avoir lu jusqu'au bout.

Postscript

J'ai également ajouté des lfs qui sont raccourcis et affichés par ordre de taille (ordre le plus grand). Le nom de la fonction, etc. a changé.

~/.bashrc



function __lsfp () 
{
    local dir file;
    if [[ -d $1 ]]; then
        [[ $rl ]] && dir=$(readlink -f "$1") || dir=$(cd "$1";pwd);
        ls --color=auto -1 $2 "$1" | while read ent; do
            echo "$dir/$ent";
        done;
    elif [[ -e $1 ]]; then
         [[ $rl ]] && readlink -f "$1" || echo "$(cd $(dirname "$1");pwd)/${1##*/}";
    else
        echo "'$1' is not found." >&2;
    fi
}

function _lsfp () 
{
    local opt arg rl;
    which readlink >/dev/null 2>&1 && rl=1
    [[ $1 =~ ^-[A-Za-z\-]$ ]] && { opt=$1; shift; }
    [[ $# -eq 0 ]] && __lsfp "$(pwd)" $opt || for arg in "$@";
    do
        __lsfp "$arg" $opt;
    done
}

alias lf='_lsfp --'
alias lfa='_lsfp -a'
alias lft='_lsfp -t'
alias lfs='_lsfp -S' #Par taille

Recommended Posts

Afficher le chemin complet (chemin absolu) d'un fichier dans un répertoire sous Linux Bash
[Note] Importation de fichiers dans le répertoire parent en Python
Remplacez le nom du répertoire et le nom du fichier dans le répertoire par une commande Linux.
L'histoire du "trou" dans le fichier
Traitez le contenu du fichier dans l'ordre avec un script shell
Sous Linux, l'horodatage d'un fichier est un peu dépassé.
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Lisez le fichier en Python avec un chemin relatif depuis le programme
Creusez le répertoire et créez une liste de chemins de répertoire + noms de fichiers
[Comprendre en 3 minutes] Le début de Linux
Obtenez le nom de fichier du répertoire (glob)
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Je veux obtenir le chemin du répertoire où le fichier en cours d'exécution est stocké.
Extraire uniquement le nom du fichier à l'exclusion du répertoire dans le répertoire
Récupérer l'appelant d'une fonction en Python
Afficher le résultat du traitement de la géométrie en Python
Copiez la liste en Python
Trouvez le nombre de jours dans un mois
Définir une adresse IP fixe dans l'environnement Linux
Essayez de modifier un peu la vue du fichier de TortoiseHg
Sortie sous la forme d'un tableau python
Dans bash, "supprimez le fichier s'il existe".
Comment lire des fichiers dans différents répertoires
Comment obtenir une liste de fichiers dans le même répertoire avec python
Lorsqu'un fichier est placé dans le dossier partagé de Raspberry Pi, le processus est exécuté.
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Une note qui implémente une tâche en Python qui charge un fichier GCS dans BigQuery
Convertir une chaîne de chemin qui utilise un lien symbolique au milieu en un chemin absolu
Obtenir le nom de fichier dans un dossier à l'aide de glob
L'histoire de la création de l'environnement Linux le plus rapide au monde
[Python] Obtenez le chemin d'accès officiel du fichier de raccourci (.lnk)
Obtenez le chemin absolu du script en cours d'exécution
Renommer le fichier en utilisant le chemin complet reçu par le shell
Afficher le résultat de sortie de sklearn.metrics.classification_report sous forme de fichier CSV
Un mémorandum sur la mise en œuvre des recommandations en Python
Linux (à propos du chemin du répertoire)
Python> bibliothèque> os> os.walk ()> Obtenir la structure du répertoire / l'implémentation pour obtenir chaque chemin de fichier dans le répertoire spécifié
[Sublime Text 2] Toujours exécuter un fichier spécifique dans le projet
[Ubuntu] Comment supprimer tout le contenu du répertoire
Éviter les pièges de l'utilisation d'un Mac (pour les utilisateurs Linux?)
Remarque sur le comportement par défaut de collate_fn dans PyTorch
Enregistrez le modèle pystan et les résultats dans un fichier pickle
Découvrez la largeur apparente d'une chaîne en python
Changer la destination de sortie standard en un fichier en Python
Accédez au fichier avec un chemin relatif à partir du script d'exécution.
Remarques sur l'intégration du langage de script dans les scripts bash
Remarque 2 pour intégrer le langage de script dans un script bash
Obtenez le nombre d'éléments spécifiques dans la liste python
Un résumé approximatif des différences entre Windows et Linux
[Python] Récupère le répertoire d'exécution du script avec un chemin absolu
Mac Linux Vérifiez la capacité directement dans un répertoire spécifique
Google recherche la chaîne sur la dernière ligne du fichier en Python
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Gestion des devis en [bash]
Accès aux fichiers sous le répertoire
À propos des autorisations de fichiers et de répertoires Linux
[Linux] Répertoire sous la racine