Como listar apenas nomes de arquivos removendo diretórios e subdiretórios

0

Como posso obter a lista de apenas nomes de arquivos e remover diretórios e subdiretórios usando find, sed, awk, cut ou any.

Por exemplo: eu recebo uma lista de todos os arquivos de mídia usando a pesquisa como:

find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" -o -name "*.flv" -o -name "*.mp4" \) -exec ls {} +

Saída:

/var/warehouse/movies/Blade/The.Bucket.List[2007]DvDrip-aXXo.avi
/var/warehouse/movies/Blade/The Lion King (1994).mkv
/var/warehouse/movies/Blade/The.Pursuit.of.Happyness.2006.DVD5.720p.BluRay.x264-REVEiLLE.en.mkv
/var/warehouse/movies/Blade/The Secret [Dual Audio] Upscaled 720p Ripped by FÅM€.mkv
/var/warehouse/movies/Blade/Yes.Man.2008.DvDRip-FxM.avi
/var/warehouse/movies/Bollywood/Bhaag Milkha Bhaag - DVDScr - XviD - 1CDRip - [DDR].avi

Eu queria a saída como:

The.Bucket.List[2007]DvDrip-aXXo.avi
The Lion King (1994).mkv
The.Pursuit.of.Happyness.2006.DVD5.720p.BluRay.x264-REVEiLLE.en.mkv
The Secret [Dual Audio] Upscaled 720p Ripped by FÅM€.mkv
Yes.Man.2008.DvDRip-FxM.avi
Bhaag Milkha Bhaag - DVDScr - XviD - 1CDRip - [DDR].avi
    
por amolveer 29.10.2014 / 15:39

2 respostas

1

POSIXly:

find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" \
    -o -name "*.flv" \
    -o -name "*.mp4" \) \
    -exec basename {} \;

ou você pode combinar find com sed :

find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" \
    -o -name "*.flv" \
    -o -name "*.mp4" \) | sed -e 's!.*/!!'
    
por 29.10.2014 / 15:54
3

Você já tem muito disso. Você só precisa alterar seu -exec para um -printf

find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" -o -name "*.flv" -o -name "*.mp4" \) -printf "%f\n"

%f imprimirá o nome do arquivo que foi encontrado, ignorando o caminho para ele.

Você também pode considerar a possibilidade de alterar sua -name para -iname (correspondência insensível a maiúsculas e minúsculas) para que também corresponda a arquivos como *.Avi e *.AVI .

    
por 29.10.2014 / 15:45

Tags