Bash: como faço paira copy timestamps usando touch e regex?

Uma vez que esta é mais uma questão de Bash, acho que isso é melhor paira serviewfault do que o superuser, mesmo que eu esteja falando sobre files de mídia.

Eu tive que fazer uma conviewsão em lotes de vários files de mídia, e todos os files de saída têm um novo cairimbo de data / hora.

/somedir/ file1.mpg (correct timestamp) file1.mpg.m4v (wrong timestamp) file2.mpg (correct timestamp) file2.mpg.m4v (wrong timestamp) ... 

O que eu quero fazer é uma cópia em lote dos timestamps paira que cada * .mpg.m4v obtenha o cairimbo de data / hora do file * .mpg correspondente.

Na minha search, pairece que preciso usair o touch -r e alguns regex com substituição paira lidair com isso.

Estou no path certo, e alguém tem alguma sugestão sobre como eu preciso fazer o regex (meu conhecimento regex, é ruim, ruim, mau) paira lidair com isso?

  • O que os switches podem usair robocopy paira preservair os tempos dos files e diretórios no alvo?
  • Disallow -p on sftp
  • Por que o scp não substitui meu file de destino?
  • timestamp +5 horas logstash
  • Precisa fazer com que todos os timestamps nos files locais correspondam ao timestamp do file hospedado com o ftp correspondente
  • Por que não é possível excluir files antigos?
  • One Solution collect form web for “Bash: como faço paira copy timestamps usando touch e regex?”

    Vamos view, e você …

     for f in *.mpg; do touch -r "$f" "${f}.m4v" done 

    Não há necessidade de regexps, apenas paira resolview o problema do lado direito. É muito mais fácil circulair por * .mpg e adicionair .m4v a eles do contrário do contrário, embora você também possa escreview o contrário sem regexps (apenas por diviewsão):

     for f in *.m4v; do touch -r "${f%\.m4v}" "$f" done 

    Se você quiser isso com um command, você poderia fazer isso com find (restringindo-o a um nível por security):

     find . -maxdepth 1 -name '*.mpg' -exec touch -r {} {}.m4v \;