2 votos

Modifique el archivo .command del terminal para que se ejecute en varios archivos

Tengo la ardua tarea de restaurar una antigua fcp proyecto y me golpeó una barricada con un montón de .mov archivos que se han movido a un NAS que modificó la asignación de recursos de los archivos (la bifurcación de recursos aparentemente se rompió?!). Tengo que usar FCP7 en un mac con OSX 10.10 y lamentablemente este equipo no puede jugar los .archivos mov (VLC puede jugar bien). He encontrado en internet un antiguo blog escrito por Florian Bogner, en el que escribió una gran terminal de la secuencia de comandos que corrige los atributos extendidos de un archivo a la vez. Puede alguien sugerir la mejor manera de ejecutar esta secuencia de comandos en una carpeta de cientos de .archivos mov?

Aquí está la secuencia de comandos:

#!/bin/bash

clear 
echo '   ____ _______ ______   ______            ______ _______   __'
echo '  / __ \__   __|____  | |  ____|   /\     |  ____|_   _\ \ / /'
echo ' | |  | | | |      / /  | |__     /  \    | |__    | |  \ V / '
echo ' | |  | | | |     / /   |  __|   / /\ \   |  __|   | |   > <  '
echo ' | |__| | | |    / /    | |____ / ____ \  | |     _| |_ / . \ '
echo '  \___\_\ |_|   /_/     |______/_/    \_\ |_|    |_____/_/ \_\'
echo ''
echo ''
echo 'This tool tries to fix the error message'
echo '  "Resource map is incorrect"'
echo 'as reported by Quicktime 7 based Applications.'
echo ''
echo 'Please drop the broken QT7 file into this window and press return:'

while read; do
    # trim the filename
    FILE=$(echo "$REPLY"| sed -e 's/^ *//' -e 's/ *$//')

    # check if the file exists
    if [ -f "$FILE" ]; then
        break
    else
        echo "Can't read this file. Please drop a valid one."
        echo "'$FILE'"
    fi
done


# check if there are EAs
echo ""
LINES=$(xattr -l "$FILE"|wc -l)

if [ "$LINES" -eq "0" ]; then
    echo "Can't fix this file"
    echo "There are no extended attributes associated."
    exit 1  
fi

# now remove the EAs
echo ""
xattr -c "$FILE" &>/dev/null
echo "You can now open this file in QT7."

# create space
echo ""

Gracias a alguien que me puede ayudar en este asunto. Saludos

3voto

siva Puntos 23

La única línea que funciona en ese script es

 xattr -c "$FILE"
 

Para ejecutar un comando en todos los archivos en una carpeta, use find:

 find /path/to/folder -type f -exec xattr -c "{}" \;
 

xattr también proporciona el indicador -r para que se ejecute de forma recursiva, por lo que puede evitar encontrarlo dado que esta funcionalidad es parte de xattr:

 xattr -rc /path/to/folder
 

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X