--Créez un fichier vide avec le nom de fichier spécifié par l'argument --Si un fichier du même nom existe déjà, numérotez-le et créez-le. --Si un fichier numéroté existe également, créez-le avec un numéro un supérieur à ce nombre.
#!/bin/bash
file=$1
if [[ -e ${file} ]]; then
maxnumber=$(find . -mindepth 1 -maxdepth 1 -printf "%f\n" \
| grep -e "^${file}\$" -e "^${file}_[0-9][0-9]*\$" \
| sed "s/^${file}_\\{0,1\\}//" \
| sed 's/^$/0/' \
| sort -rn \
| head -n 1 ) ;
file+="_$((maxnumber+1))"
fi
touch $file
#Rechercher le répertoire actuel(.)Rechercher dans la liste des fichiers
find . -mindepth 1 -maxdepth 1 -printf "%f\n"
# -avec mindepth 1-Limiter la hiérarchie recherchée par maxdepth 1 au courant uniquement
# -Printf imprime uniquement le nom du fichier à l'exclusion du nom du répertoire(%f)Séparez par un saut de ligne (\n)
#Rechercher des fichiers non numérotés et numérotés avec grep
grep -e "^${file}\$" -e "^${file}_[0-9][0-9]*\$"
# -Utiliser une expression régulière comme option e
#"nom de fichier_"Nom de fichier" dans "Numéro"_Seul le nombre est sorti sauf
sed "s/^${file}_\\{0,1\\}//"
# {0,1}Représente 0 à 1 répétition ou moins du caractère précédent,_Match avec ou sans
#ce temps{}Échapper(\)Est nécessaire.\Parce qu'il a besoin d'être échappé\\Devient
#Les fichiers non numérotés seront des lignes vides, alors remplacez-les par 0
sed 's/^$/0/'
# ^Les caractères qui suivent correspondent au début de la ligne,$Indique que la chaîne précédente correspond à la fin de la ligne
# ^$Pointe vers une ligne vide car rien n'est écrit entre
#Trier par ordre décroissant des nombres
sort -rn
# -r Option pour trier dans l'ordre inverse
# -n Options pour considérer les chaînes comme des nombres
#Sortir uniquement le plus grand nombre
head -n 1
# -n 1 Sortie uniquement de la première ligne
Avec les commandes jusqu'à présent, j'ai pu obtenir le plus grand nombre de noms de fichiers en double. En insérant ces commandes dans le remplacement de commande $ (), le résultat de l'exécution est affecté à la variable maxnumber.
À partir de là, créez un nouveau numéro et créez un fichier.
#Dans le nom du fichier "_Donnez "numéro"
file+="_$((maxnumber+1))"
#Ajoutez 1 à maxnumber et ajoutez 1 au nom du fichier_Ajouter un numéro"
#Création de fichier
touch ${file}
Si le nom du fichier n'est pas dupliqué, il sera créé tel quel sans numéro.
Recommended Posts