GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwendung von „find“, um Dateinamen ohne Erweiterung zurückzugeben

Hier ist eine einfache Lösung:

find . -type f -iname "*.ipynb" | sed 's/\.ipynb$//1'

Um nur Dateinamen ohne die Erweiterung zurückzugeben, versuchen Sie:

find . -type f -iname "*.ipynb" -execdir sh -c 'printf "%s\n" "${0%.*}"' {} ';'

oder (ohne -type f ab sofort) :

find "$PWD" -iname "*.ipynb" -execdir basename {} .ipynb ';'

oder:

find . -iname "*.ipynb" -exec basename {} .ipynb ';'

oder:

find . -iname "*.ipynb" | sed "s/.*\///; s/\.ipynb//"

jedoch Aufruf von basename auf jeder Datei kann ineffizient sein, daher ist der Vorschlag von @CharlesDuffy:

find . -iname '*.ipynb' -exec bash -c 'printf "%s\n" "${@%.*}"' _ {} +

oder:

find . -iname '*.ipynb' -execdir basename -s '.sh' {} +

Um den vollständigen Pfad und Dateinamen (ohne Erweiterung) in derselben Zeile auszugeben, versuchen Sie:

find . -iname "*.ipynb" -exec sh -c 'printf "%s\n" "${0%.*}"' {} ';'

oder:

find "$PWD" -iname "*.ipynb" -print | grep -o "[^\.]\+"

So drucken Sie den vollständigen Pfad und den Dateinamen in separaten Zeilen:

find "$PWD" -iname "*.ipynb" -exec dirname "{}" ';' -exec basename "{}" .ipynb ';'

Linux
  1. Auslassen der Erweiterung mit Find?

  2. Manipulieren Sie {} Rückgabezeichenfolge von Find -exec?

  3. Wie man nur ausführbare Dateien (auch bekannt als Dateien ohne Erweiterung) entfernt/löscht

  4. So führen Sie eine Datei ohne die Erweiterung .sh in der Shell aus

  5. Entfernen von Dateien mit rm unter Verwendung von find und xargs

Finden Sie Linux-Systemdetails mit Python

Finden Sie Text in Dateien unter Linux mit grep

Suchen Sie rekursiv nach Dateien mit einer bestimmten Erweiterung

Finden Sie mithilfe des Shell-Skripts heraus, ob die Datei in HDFS vorhanden ist oder nicht

gzip alle Dateien ohne sie zu löschen

Wiederherstellen von ~/.bashrc ohne Verwendung von Bash-Befehlen