[LINUX] Shell-Skript, das beim Erstellen von Dateien doppelte Namen nummeriert

Skriptübersicht

--Erstellen Sie eine leere Datei mit dem durch das Argument angegebenen Dateinamen

#!/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

Kommentar

#Aktuelles Verzeichnis suchen(.)Durchsuchen Sie die Dateiliste von
  find . -mindepth 1 -maxdepth 1 -printf "%f\n" 

  # -mit mindepth 1-Begrenzen Sie die von maxdepth 1 gesuchte Hierarchie auf nur aktuell
  # -Printf druckt nur den Dateinamen ohne den Verzeichnisnamen(%f)Mit einem Zeilenumbruch trennen (\n)
 #Suchen Sie mit grep nach nicht nummerierten und nummerierten Dateien
   grep -e "^${file}\$" -e "^${file}_[0-9][0-9]*\$" 
   # -Verwenden Sie den regulären Ausdruck als e-Option
 #"Dateiname_"Dateiname" in "Nummer"_Es wird nur die Nummer ausgegeben, außer
   sed "s/^${file}_\\{0,1\\}//"
   # {0,1}Stellt eine Wiederholung des vorherigen Zeichens von 0 zu 1 oder weniger dar._Match mit oder ohne
   #diese Zeit{}Flucht(\)Ist notwendig.\Weil es entkommen muss\\Wird
#Nicht nummerierte Dateien sind Leerzeilen. Ersetzen Sie sie daher durch 0
  sed 's/^$/0/' 
  # ^Die folgenden Zeichen stimmen mit dem Zeilenanfang überein.$Gibt an, dass die vorherige Zeichenfolge mit dem Zeilenende übereinstimmt
  #  ^$Zeigt auf eine leere Zeile, da nichts dazwischen geschrieben ist
#Sortieren Sie in absteigender Reihenfolge der Zahlen
  sort -rn
  #  -r Option zum Sortieren in umgekehrter Reihenfolge
  #  -n Optionen zum Betrachten von Zeichenfolgen als Zahlen
#Geben Sie nur die größte Anzahl aus
  head -n 1 
  # -n 1 Nur die erste Zeile ausgeben

Mit den bisherigen Befehlen konnte ich die größte Anzahl doppelter Dateinamen erhalten. Durch Einfügen dieser Befehle in die Befehlsersetzung $ () wird das Ausführungsergebnis der Variablen maxnumber zugewiesen.

Erstellen Sie von hier aus eine neue Nummer und eine Datei.

#Im Dateinamen "_Geben Sie "Nummer"
  file+="_$((maxnumber+1))"
  #Fügen Sie 1 zu maxnumber und 1 zum Dateinamen hinzu_Nummer hinzufügen"
#Dateierstellung
  touch ${file}

Wenn der Dateiname nicht dupliziert wird, wird er so erstellt, wie er ohne Nummer ist.

Recommended Posts

Shell-Skript, das beim Erstellen von Dateien doppelte Namen nummeriert
Erstellen eines Shell-Skripts zum Schreiben eines Tagebuchs
Shell-Skript zum Einfügen von Webmin in Alpine Linux
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Erstellen eines Python-Skripts, das die e-Stat-API unterstützt (Version 2)
Ein Shell-Skript, das nur das Ergebnis der SQL-Ausführung per E-Mail sendet
Versuchen wir es mit einem Shell-Skript
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Ein Python-Skript, das auf dem Mac erstellte ._DS_Store- und ._ * -Dateien löscht
Skript zum Herunterladen von AWS RDS-Protokolldateien mit hoher Geschwindigkeit
Vorsichtsmaßnahmen beim Erstellen eines Python-Generators
Beim Erstellen einer Matrix in einer Liste
[Stada] Ein Skript, das Sie aufruft, wenn Pokemon GO veröffentlicht wird
[Ubuntu] So führen Sie ein Shell-Skript aus
Verwalten Sie Protokollrotationsgenerationen mit einem Shell-Skript.
Skript, das die angegebene URL morphologisch analysiert
Skript zum Konvertieren zwischen Django-Sprachdatei (PO) und tabulatorgetrenntem Text (TSV)
Vorsichtsmaßnahmen beim Erstellen einer Ansicht, die Datensätze nach Datum und Uhrzeit eingrenzt