Команда резервного копіювання змінює типи файлів у Linux


0

Переглядаючи каталог і копіюючи зображення з розширеннями файлів, які відображаються в новій папці. Однак деякі зображення мають однакову назву, тому я використовую команду резервного копіювання.

Проблема, яку я маю під час перейменування та копіювання, полягає в тому, що тип файлу змінюється з зображення на логотип (не впевнений, що це означає).

Також можна перейменувати файл 'image_2101.JPG' на 'image_2101.JPG.JPG' замість того, щоб просто вставити. ~ 1 ~, коли його скопійовано.

find /root/folder/images \( -name  '*.png' -o  -name '*.jpg' -o -name '*.JPG' \) -exec cp --backup=numbered -t/root/folder/CopiedImages {} +

1
До речі, можна використовувати -iname '*.jpg' зробити тест, не чутливий до регістру. Він відповідатиме *.jpg, *.JPG, *.Jpg, *.jPGі т.д.
G-Man

Відповіді:


2

cp --backup перевіряє розширення резервного копіювання ~ до файлів і numbered опція робить його використовувати ~1~, ~2~ і так далі, тому для його зміни необхідно створити скрипт для зміни поведінки.

Цей сценарій створить копію кожного зображення під sourcefolder до одного призначення папки (буде ні створити будь-який підкаталог), уникаючи колізій, додавши номер до файлу, безпосередньо перед розширенням. Зверніть увагу, що кожен раз, коли він запускається, він буде дублювати кожен файл, так само, як і ваш сценарій. The while IFS частина потрібна для імен файлів з пробілами.

sourcefolder="/root/folder/images"
destinationfolder="/root/folder/CopiedImages"
find "${sourcefolder}" \( -name  '*.png' -o  -name '*.jpg' -o -name '*.JPG' \) -print0 | while IFS= read -r -d $'\0' img; do
    imgname="${img##*/}"
    ext="${imgname##*.}"
    noext="${imgname%.*}"
    destname="${destinationfolder}/${noext}.${ext}"
    count=0
    while [ -f "${destname}" ] ; do
        count=$((count+1))
        destname="${destinationfolder}/${noext}.${count}.${ext}"
    done
    cp "${img}" "${destname}"
done
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.