GNU/Linux >> Znalost Linux >  >> Linux

Najít nerekurzivní při zadání vzoru na příkazovém řádku?

Představte si zdrojový strom. Všude jsou soubory xml.

Ale protože je v kořenu tohoto stromu XYZ.xml, nenajde moje xml soubory.

find -iname *.xml

vrací

./XYZ.xml

místo

./XYZ.xml
./a/b/c/bob.xml
./b/d/top.xml

Přijatá odpověď:

find -iname '*.xml'

Jinak se váš shell rozšíří *.xml do XYZ.xml a příkaz, který se skutečně provede, je

find -iname XYZ.xml

Důvod, proč to funguje, pokud v aktuálním adresáři nejsou žádné soubory XML, je ten, že shelly obecně nechávají zástupné znaky nerozbalené, pokud se s ničím neshodují. Obecně platí, že kdykoli chcete, aby byly zástupné znaky rozšířeny jiným programem než shellem (např. find , tar , scp , atd.), musíte je citovat, aby se je shell sám nepokoušel rozšířit.


Linux
  1. Bash Echo Příkazový řádek spuštěn na samotném příkazovém řádku (ne ve skriptu)?

  2. Zrychlete rsync při migraci linuxového serveru z příkazového řádku

  3. find:příkaz nenalezen

  1. Udělejte více na příkazovém řádku Linuxu s GNU Parallel

  2. Hledání souborů v příkazovém řádku (jak na to)

  3. vim:příkaz nenalezen

  1. 8 tipů pro příkazový řádek Linuxu

  2. Jak najít soubory v CentOS 8 na příkazovém řádku

  3. grep:příkaz nenalezen