Je sais comment renommer des fichiers sous Unix:
$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh
^-------this part------^ ^------this part-------^
Il faut trop de temps pour répéter ~/folder/subfolder/file
deux fois.
Y a-t-il un moyen plus rapide?
rename
.rename
soit une meilleure solution carrename
ne jamais vous demander de remplacer le fichier existant ou non.Vous pouvez également utiliser
rename
(une partie du paquet util-linux).Voir la page de manuel renommer pour plus de détails.
la source
{a,b}
fonctionnalité des shells .rename
s'agit d'un programme totalement différent, basé sur Perl. Là, vous utiliseriezrename 's/txt$/sh/' ~/folder/subfolder/file.txt
.mmv
.Tout ce qui précède est bon. Cela fonctionnerait aussi:
la source
sudo
pièce.sudo
?sudo
cela l'interprète~
comme le répertoire personnel de la racine.sudo
lemv
, mais pascd
. Découvrez pourquoi cd est un shell intégré. Et vous ne pouvez passudo
(
Non, vous devez donner le chemin complet au fichier pour le renommer. La seule alternative est de se déplacer dans le dossier cible avant d'exécuter le
mv
:Vous pouvez également écrire une petite fonction qui renomme le fichier dans le répertoire cible. Par exemple, ajoutez ces lignes à votre fichier d’initialisation du shell (
~/.bashrc
si vous utilisezbash
):Ensuite, ouvrez un nouveau terminal ou lancez-vous simplement
source ~/.bashrc
pour relire le fichier init et vous pouvez faire:la source
lmv()
fonction. Je ne savais pas que :)Juste pour étendre l'utilité de la réponse de Cuonglm (ne pas prendre de crédit car j'aime sa solution) et sa réponse est correcte.
Le cas d'utilisation est que nous voulons souvent mv un fichier dans un emplacement distant (le vrai problème), par exemple, /folder/subfolder/configFile.dat TO configFile.dat.orig
Cette forme de la commande ajoute une extension de fichier (ne remplace pas l'extension d'origine)
Expliqué: "{, .orig}" signifie remplacer (rien) à la fin du nom du fichier par (quelque chose) ".orig"
OU pour supprimer une extension de fichier (inverser le changement de nom)
Remarque: Toujours dans la rubrique "Le moyen le plus rapide de renommer des fichiers sans retaper le chemin du répertoire".
la source
Oui. Si vous utilisez
bash
, vous faitessudo pushd ~/folder/subfolder/ && sudo mv ./file.txt ./file.sh && popd
.Ce qui est en réalité plus gros et peut échouer si vous perdez des autorisations d’accès au répertoire original lorsque vous avez effectué le
popd
.la source
pushd
etpopd
ici? Comment est-ce meilleur quecd ~/folder/subfolder/ && sudo mv file.txt file.sh
?pushd
popd
est d'utilisercd
et de revenir aveccd -
.popd
est meilleur quecd ../../
, le cas échéant.(cd /path/to/there && mv x y)
ensuite (avec un sous-shell)sudo
avantpushd
. Donc, la commande complète devrait êtrepushd ...dir && sudo mv old new && popd
. Au lieu de cela, on pourrait le faire,(cd ...dir; sudo mv old new)
car une exécution dans un sous-shell se chargera automatiquement des changements de répertoire.