GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de 'find' pour renvoyer les noms de fichiers sans extension

Voici une solution simple :

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

Pour renvoyer uniquement les noms de fichiers sans l'extension, essayez :

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

ou (en omettant -type f à partir de maintenant) :

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

ou :

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

ou :

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

cependant invoquant basename sur chaque fichier peut être inefficace, donc la suggestion de @CharlesDuffy est :

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

ou :

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

Pour imprimer le chemin complet et le nom du fichier (sans extension) sur la même ligne, essayez :

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

ou :

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

Pour imprimer le chemin complet et le nom du fichier sur des lignes distinctes :

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

Linux
  1. Utiliser "sed" pour rechercher et remplacer ?

  2. Linux - Comment trouver des processus utilisant le port série ?

  3. Comment supprimer/supprimer les fichiers exécutables (c'est-à-dire les fichiers sans extension) uniquement

  4. Trouver récursivement des fichiers avec une extension spécifique

  5. Comment exécuter un fichier sans extension .sh dans le shell

Trouver les détails du système Linux à l'aide de Python

Rechercher du texte dans des fichiers sous Linux à l'aide de grep

gzip tous les fichiers sans les supprimer

Restaurer ~/.bashrc sans utiliser les commandes bash

Comment trouver uniquement des répertoires sans sous-répertoires ?

Forcer dig à résoudre sans utiliser le cache