GNU/Linux >> Znalost Linux >  >> Linux

Pomocí 'najít' vrátíte názvy souborů bez přípony

Zde je jednoduché řešení:

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

Chcete-li vrátit pouze názvy souborů bez přípony, zkuste:

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

nebo (s vynecháním -type f od nynějška) :

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

nebo:

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

nebo:

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

nicméně vyvolání basename na každém souboru může být neefektivní, takže návrh @CharlesDuffy je:

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

nebo:

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

Chcete-li vytisknout úplnou cestu a název souboru (bez přípony) na stejný řádek, zkuste:

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

nebo:

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

Chcete-li vytisknout úplnou cestu a název souboru na samostatné řádky:

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

Linux
  1. Jak přejmenovat více souborů pomocí funkce Najít?

  2. Linux – Jak najít procesy pomocí sériového portu?

  3. Jak odstranit/smazat pouze spustitelné soubory (aka soubory bez přípony).

  1. Odstranění souborů pomocí rm pomocí find a xargs

  2. Obnovení ~/.bashrc bez použití příkazů bash

  3. Jak odstranit soubor bez použití rm?

  1. Vynechat rozšíření s Find?

  2. Jak najít pouze adresáře bez podadresářů?

  3. Vynutit dig k vyřešení bez použití mezipaměti