Liste os arquivos de outro formato enquanto encontra um certo padrão de nome

1

Eu queria editar os arquivos txt de videoA e videoB apenas se os nomes dos arquivos movs contiverem o namespace - test

Por exemplo,

videoDir
    |-videoA
        |- videoA_v001_test.mov
        |- videoA_v001_info.txt
    |-videoB
        |- videoB_v001_test.mov
        |- videoB_v001_info.txt
    |-videoC
        |- videoC_v002.mov
        |- videoC_v002_info.txt

Acima, desejo editar videoDir/videoA/videoA_v001_info.txt e videoDir/videoB/videoB_v001_info.txt , mas não videoC_v002_info.txt , pois o nome do arquivo .mov correspondente não contém test .

Eu tenho o comando - find -name "*.mov" | grep -rn "test" | find -name "*.txt" , find -name "*.mov" | grep -rn "test" does indeed lists out the 2 files that fulfills the condition (videoA and videoB). I added in find -name "* .txt" 'como eu tinha pensado que ele filtraria para os arquivos txt dentro dos resultados de saída, mas eu estava errado ainda está listando todos os arquivos txt

    
por dissidia 30.01.2015 / 03:56

2 respostas

2

com zsh :

vi ./**/*_test.mov(.s:_test.mov:_info.txt:)
    
por 30.01.2015 / 08:43
0

Você precisa de algo como

find . -name "*.mov" -exec grep test {} + | sed -n 's/^\([^:]*\):.*$//p' | xargs -d \n -n 1 $EDITOR

para abrir um arquivo de cada vez

ou

find . -name "*.mov" -exec grep test {} + | sed -n 's/^\([^:]*\):.*$//p' | xargs -d \n $EDITOR

para abri-los simultaneamente

(assumindo que os nomes dos arquivos não contenham dois pontos)

    
por 30.01.2015 / 04:13