GNU/Linux >> Tutoriels Linux >  >> Linux

Fichier mv Linux avec un nom long

Solution 1 :

pour un seul fichier essayez

mv dir1/dir2/dir3/file.{txt,txt.old}

où le X{a,b} construire étendre à Xa Xb , vous pouvez avoir un aperçu en utilisant

echo dir1/dir2/dir3/file.{txt,txt.old}

pour voir si cela correspond à vos besoins.

remarque :

  1. cela pour plusieurs fichiers

    mv dir1/dir2/dir3/file{1,2,3}.{txt,txt.old}
    

est peu susceptible de s'étendre à ce que vous voulez. (cela se développera en un mélange de file.txt file1.txt.old file2.txt ...)

  1. {txt,txt.old} peut être raccourci à {,.old} selon le commentaire

  2. si le nom du répertoire est sans ambiguïté, un caractère générique peut être utilisé.

    mv *1/*2/d*/*.{,old}
    

pour plusieurs fichiers, utilisez rename

rename -n s/txt/old.txt/ dir1/dir2/dir3/file*.txt 

supprimer -n pour avoir un renommage effectif.

Solution 2 :

La commande rename renomme tous les fichiers correspondants. Son objectif principal est de renommer plusieurs fichiers, mais si l'expression Perl ne correspond qu'à un seul fichier, alors elle ne renommera que ce seul fichier. Pour plus de détails et une syntaxe spécifique à la distribution, veuillez lire la page de manuel :man rename .

Exemple d'utilisation :renommer "/path/file.txt" en "/path/file.txt.old":

rename 's/file.txt/file.txt.old/g' /path/file.txt

Notation plus courte (grâce à shalomb) :

rename 's/$/.old/' /path/file.txt
rename '$_.=".old"' /path/file.txt

Pour un essai à blanc, utilisez rename -n .

Plus d'exemples et de détails peuvent être trouvés sur https://thepcspy.com/read/bulk-rename-files-in-ubuntu/

Solution 3 :

J'aime la solution de @archemar consistant à utiliser l'extension {}, car vous pouvez l'utiliser lorsque vous avez déjà démarré votre ligne de commande. Voici quelques autres possibilités d'exhaustivité :

F="dir1/dir2/dir3/file.txt" ; mv "$F" "$F.old"

(les guillemets ne sont nécessaires que si vous avez des espaces ou d'autres caractères de césure dans le nom)

mymv() {
    mv "$1/$2" "$1/$3"
}

mymv dir1/dir2/dir3 file.txt file.txt.old
mymv dir5/dir6/dir7 file.txt file.txt.old

Remarques :

  • C'est la syntaxe bash, vous utilisez peut-être un autre shell
  • mymv peut être n'importe quelle chaîne raisonnable, j'ai utilisé mymv pour "mon coup".
  • La définition de la fonction peut être placée dans votre .bash_profile

Un autre :

cd dir1/dir2/dir3 ; mv file.txt file.txt.old ; cd -

mais

(cd dir1/dir2/dir3/ && exec mv file.txt file.txt.old)

(de @Adam et @CharlesDuffy) est sans doute mieux en cas d'échec du cd.

Solution 4 :

Pour un cas ponctuel, si je ne veux pas changer mon répertoire actuel, je peux simplement utiliser un sous-shell :

(cd dir1/dir2/dir3/ && mv file.txt file.txt.old)

Parce que vous cd à l'intérieur du sous-shell, vous n'avez pas changé de répertoire dans votre shell actuel

Solution 5 :

Si vous souhaitez entrer dans le sous-répertoire afin de raccourcir le mv commande, mais que vous souhaitez revenir au répertoire en cours par la suite, il existe deux façons de procéder. L'une consiste à mettre le cd et mv dans un sous-shell (comme cela a déjà été suggéré).

L'autre consiste à utiliser pushd et popd pour changer de répertoire :

pushd dir1/dir2/dir3/; mv file.txt file.txt.old; popd

Lepushd la commande est comme cd , sauf qu'il place d'abord le nom du répertoire courant sur une pile. popd supprime le nom supérieur de la pile et passe dans ce répertoire.


Linux
  1. Renommer un fichier dans le terminal Linux

  2. Améliorez les performances du système Linux avec noatime

  3. Commande de tri sous Linux avec des exemples

  4. Comment écrire un fichier avec C sous Linux ?

  5. Comment supprimer un fichier portant ce nom sous Linux :-]???????q

Comment travailler avec des liens durs et des liens souples sous Linux

Utilisation de la commande Linux mv avec des exemples

Sécurisez Linux avec le fichier Sudoers

Commande de montage Linux avec exemples

Commande Linux gawk avec exemples

Linux make Commande avec des exemples