Terminal: Выбор по MIME - необходимо добавить расширение для каждого файла - PullRequest
0 голосов
/ 28 апреля 2019

У меня БОЛЬШОЕ количество старых файлов и папок, МНОГИЕ без расширений.

Я объединил Automator Mac и этот код оболочки, чтобы успешно распечатать список всех путей к файлам одного типа в пределахзаданная папка.

Я просто не знаю, как добавить подходящее расширение (например, ".tif") в отфильтрованный список файлов.

for f in "$@"
do
    find "$f" -type f -exec file --no-pad --mime-type {} + 2>/dev/null \
    | awk '$NF == "image/tiff" {$NF=""; sub(": $", ""); print}'
done

Если я добавлю:

mv -- "$f" "${f%}.tif"

он просто добавляет «.tif» в КАЖДЫЙ файл и папку.Не отфильтрованный список.

Как изменить только те файлы, которые были в результатах «печати»?

Спасибо за любую помощь, которую вы можете оказать!:)

1 Ответ

0 голосов
/ 28 апреля 2019

Вместо этого вы добавляете команду в следующую строку в блоке цикла, который применяется только для всех файлов.

Для вашей текущей логики, она должна быть добавлена ​​к выводу awk

for f in "$@"
do
    find "$f" -type f -exec file --no-pad --mime-type {} + 2>/dev/null \
    | awk '$NF == "image/tiff" {$NF=""; sub(": $", ""); print}' | xargs -I{} mv {} {}.tif
done 

Хотя я не уверен, что подход очень эффективен.

Отредактировано сноваby stellababy:

Вы можете решить эту проблему таким образом, используя цикл for.

for f in `find . -type f ! -name "*.*"`
do
    file_type=`file -b --mime-type $f`
    if [ "$file_type" = "image/jpeg" ]; then 
        mv $f $f.jpg
    elif [ "$file_type" = "image/png" ]; then 
        mv $f $f.png
    elif [ "$file_type" = "image/tiff" ]; then 
        mv $f $f.tif
    elif [ "$file_type" = "image/vnd.adobe.photoshop" ]; then 
        mv $f $f.psd
    elif [ "$file_type" = "application/pdf" ]; then 
        mv $f $f.pdf
    elif [ "$file_type" = "application/vnd.ms-powerpoint" ]; then 
        mv $f $f.ppt
    elif [ "$file_type" = "application/x-quark-xpress-3" ]; then 
        mv $f $f.qxp
    elif [ "$file_type" = "application/msword" ]; then 
        mv $f $f.doc
    fi
done 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...