Wie entferne ich eine bestimmte Erweiterung rekursiv aus Dateien mit einem Bash-Skript?

7

Ich versuche, ein Bash-Skript zu finden, das rekursiv nach Dateien mit der Erweiterung .bx sucht und diese Erweiterung entfernt. Die Dateinamen haben kein bestimmtes Format (einige sind versteckte Dateien mit dem Präfix ".", Einige haben Leerzeichen im Namen usw.) und nicht alle Dateien haben diese Erweiterung.

Ich bin mir nicht sicher, wie ich jede Datei mit der Erweiterung .bx (in und unter meinem cwd) finden und entfernen kann. Danke für die Hilfe!

    
nick 01.10.2010, 08:07
quelle

7 Antworten

12
%Vor%     
tylerl 01.10.2010, 08:13
quelle
2
%Vor%     
Ken 01.10.2010 08:31
quelle
2

Bash 4 +

%Vor%     
ghostdog74 01.10.2010 09:04
quelle
1

Angenommen, Sie befinden sich in dem Ordner, von dem aus Sie dies tun möchten

%Vor%     
Raghuram 01.10.2010 08:16
quelle
1

for blah in *.bx ; do mv ${blah} ${blah%%.bx}

    
jyz 01.10.2010 11:45
quelle
1

Extra: Wie man eine Erweiterung von Dateinamen entfernt

%Vor%

schneidet ab dem letzten Punkt, d. h. pet.cat.dog --- & gt; pet.cat

%Vor%

schneidet ab dem ersten Punkt, d. h. pet.cat.dog --- & gt; Haustier

"- maxdepth 1" beschränkt die Operation auf das aktuelle Verzeichnis, "-type f" wird nur zur Auswahl von Dateien verwendet. Sed & amp; Mit der grep-Kombination werden nur Dateinamen mit Punkt ausgewählt. Die Anzahl der Prozentzeichen im Befehl "mv" definiert den tatsächlichen Schnittpunkt.

    
ajaaskel 25.08.2012 13:17
quelle
0

Hier ist eine andere Version, die folgendes macht:

  1. Findet Dateien basierend auf $old_ext variable (momentan auf .bx gesetzt) ​​in und unter cwd , speichert sie in $files
  2. Ersetzt die Erweiterung dieser Datei auf nichts (oder etwas Neues, abhängig von $new_ext variable, aktuell auf .xyz gesetzt) ​​

Das Skript verwendet dirname und basename , um den Dateipfad bzw. den Dateinamen herauszufinden.

%Vor%     
gsbabil 05.10.2010 07:28
quelle

Tags und Links