localize arquivos com nomes semelhantes e depois diminua ainda mais

0

Meu media player marca arquivos de vídeo como tendo sido assistidos criando um novo arquivo com o mesmo nome, mas com uma extensão ".t" adicionada (na mesma pasta). Por exemplo, depois de assistir "SeinfeldS07E02.mp4", ele produzirá um arquivo chamado "SeinfeldS07E02.mp4.t"

Eu quero que todos os arquivos de vídeos assistidos sejam automaticamente movidos para outra pasta, e estava pensando que talvez a melhor maneira seria através de um shell script que irá encontrar o arquivo * .t, e então encontrar o arquivo original do qual seu nome foi baseado e ter THAT arquivo movido para outra pasta. Eu já tenho um script muito simples que pode encontrar e mover o arquivo * .t, mas não tenho idéia de como reduzi-lo ainda mais. Isso é possível?

    
por Jim 01.01.2018 / 15:08

2 respostas

1

Para evitar surpresas de nomes de arquivos que contenham espaços, ou pior, pode valer a pena executar tudo diretamente de find :

find /PATH/TO/SOURCE -name '*.mp4' \
    -exec sh -c '[ -e "$1.t" ]
                 && mv -- "$1" /PATH/TO/TARGET
                 && rm -- "$1.t"' _ {} \;
    
por 01.01.2018 / 16:21
0

for i in $(find /path -type f -name "*.mp4.t") ; do mv $(echo $i | sed "s/.mp4.t/.mp4/") /path/to/otherfolder/ ; done

pode ser sufi- ciente, eu acho

simule:

[root@h2g2w ~]# mkdir {toto,titi}
[root@h2g2w ~]# touch toto/{a,b,a.t,b.t,c}
[root@h2g2w ~]# for i in $(find toto/ -type f -name "*.t") ; do mv $(echo $i | sed "s/\.t//") titi/ ; done
[root@h2g2w ~]# ls -l titi
total 0
-rw-r--r--. 1 root root 0  1 janv. 15:13 a
-rw-r--r--. 1 root root 0  1 janv. 15:13 b
[root@h2g2w ~]# rm -rf toto titi
[root@h2g2w ~]# #OK only a & b have moved
    
por 01.01.2018 / 15:13