GNU/Linux >> Znalost Linux >  >> Linux

Jak získat pouze jména z příkazu find bez cesty

Použijte find trunk/messages/ -name "*.po" -exec basename {} .po \;

Příklad a vysvětlení:

Vytvořte nějaké testovací soubory:

$ touch test1.po  
$ touch test2.po  
$ find . -name "*.po" -print
./test1.po  
./test2.po

Ok, soubory budou nalezeny, včetně cesty.

Pro každý výsledek spusťte basename a z názvu odstraňte část .po

$ find . -name "*.po" -exec basename \{} .po \;  
test1  
test2

Můžete použít -execdir parametr, který by vytiskl soubor bez cesty, např.:

find . -name "*.po" -execdir echo {} ';'

Soubory bez přípon:

find . -name "*.txt" -execdir basename {} .po ';'

Viz:Proč se příkaz GNU find -execdir chová jinak než příkaz BSD find?


Na základě příkazu, který jsem našel zde:http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html

Můžete to udělat pomocí sed (který pro mě fungoval rychleji než basename přístup):

find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'

Linux
  1. Jak integrovat příkaz MV po příkazu Najít?

  2. Jak získat pouze soubory vytvořené po rande s Ls?

  3. Jak získat název souboru pouze pomocí Linuxu „najít“?

  1. Jak získat cestu k aktuálnímu souboru (pwd) v Linuxu z C?

  2. Jak zjistit verzi Bluez z příkazového řádku?

  3. příkaz najít z PID

  1. Linux – Jak zjistit rodinu architektury Intel z příkazového řádku?

  2. Najít pouze cíl Symlinku?

  3. Jak spustit příkaz „najít“ pouze v aktuálním adresáři a ne v podadresářích