com zsh
:
vi ./**/*_test.mov(.s:_test.mov:_info.txt:)
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
com zsh
:
vi ./**/*_test.mov(.s:_test.mov:_info.txt:)
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)
Tags command-line find wildcards shell