J'ai le malheur de venir d'un arrière-plan MS-DOS - mais au moins cela me fait apprécier à quel point Linux est beaucoup plus puissant. J'ai travaillé pour obtenir mon Linux-Fu à la hauteur, mais il y a quelques choses qui pourraient être faites avec DOS que je ne sais pas comment accomplir le plus facilement avec Linux:
Renommer plusieurs fichiers - à l'aide de deux caractères génériques
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\>rename *.txt *.bak
c:\> dir
Directory of c:\
file1.bak
file2.bak
file3.bak
file4.bak
Je sais que je pourrais utiliser find -exec
ici, mais est-il possible d'utiliser une syntaxe plus courte - peut-être mv
avec des drapeaux ou syntaxe spéciaux? Je suppose que la clé est le deuxième *
caractère générique car Linux ne devrait pas avoir de problème avec le premier (c'est-à-dire que je sais comment sélectionner les fichiers que je veux renommer en utilisant des caractères génériques)
Renommer un fichier unique - à l'aide d'un caractère générique
c:\> dir
Directory of c:\
file1.txt
c:\>rename file1.txt *.bak
c:\> dir
Directory of c:\
file1.bak
Cela serait particulièrement utile lors du renommage de noms de fichiers longs et lourds. J'ai pensé que je pourrais peut-être utiliser mv file1.txt $1.bak
pour finir avec file1.txt.bak
ce qui serait également acceptable, mais je ne suis pas sûr que vous puissiez référencer un $1
paramètre en ligne avec une commande shell. Encore une fois, dans ce cas particulier, il est juste pratique de savoir comment ms-dos bastardise le *
caractère générique à utiliser comme une sorte de correspondance capture / remplacement pour une partie du nom de fichier.
Filtrage des listes d'annuaire avec un caractère générique
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
text.txt
\temp (directory)
c:\> dir file*
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\> t*
Directory of c:\
text.txt
\temp (directory)
Je ne sais pas quelle est la bonne syntaxe pour le faire ls
, ou si c'est même possible. Si j'ai fait quelque chose comme ls t*
ça, il va récursivement dans les répertoires commençant par t
. Ma solution de contournement a été utilisée find . --max-depth 1 -iname "t*"
ou quelque chose du genre ls -al | grep t
- ni l'une ni l'autre n'est aussi courte et simple que cela dir t*
.
Enfin, je sais que je peux configurer des alias pour raccourcir ces longues commandes, mais j'aimerais apprendre quelques linux-fu prêts à l'emploi pour faire ces choses parce que parfois vous êtes connecté à un système distant ou que vous travaillez sur une nouvelle machine.
Alors, comment puis-je mv
et les ls
fichiers de la même manière que je le faisais dir
et les rename
fichiers?