GNU/Linux >> Znalost Linux >  >> Linux

Jak vypsat konkrétní typ souborů v rekurzivních adresářích v shellu?

find . | grep "\.doc$"

Tím se také zobrazí cesta.


ls příkazový výstup je určen hlavně pro čtení lidmi. Pro pokročilé dotazování pro automatizované zpracování byste měli použít výkonnější find příkaz:

find /path -type f \( -iname "*.doc" -o -iname "*.pdf" \) 

Jako byste měli bash 4.0++

#!/bin/bash
shopt -s globstar
shopt -s nullglob
for file in **/*.{pdf,doc}
do
  echo "$file"
done

Pokud vám více vyhovuje „ls“ a „grep“, můžete si dělat, co chcete, pomocí regulárního výrazu v příkazu grep (koncový znak „$“ znamená, že na konci řádku musí být .doc. vyloučit "soubor.doc.txt"):

ls -R |grep "\.doc$"

Další informace o použití grep s regulárními výrazy v man.


Linux
  1. Jak Grep v souborech Pdf?

  2. Jak získat seznam adresářů v zipu?

  3. Jak najít / vypsat všechny jedinečné soubory ve dvou adresářích?

  1. Jak najít více řetězců v souborech?

  2. Jak vypsat rekurzivní velikosti souborů a adresářů v adresáři?

  3. Jak rekurzivně kopírovat adresáře pomocí rsync při vyloučení konkrétních souborů

  1. Jak rekurzivně vypsat všechny soubory a adresáře

  2. Jak odlišíte adresář pouze pro soubory určitého typu?

  3. Jak v Linuxu najdu všechny soubory obsahující konkrétní text?