2016-12-07 7 views
0

Мне нужно переименовать несколько изображений и использовать родительский каталог в качестве базового имени. Чтобы не переписать другую, необходимо добавить суффикс. Порядок процесса переименования должен соответствовать отметке времени файла. Поскольку «первый» файл является признаком для сайта, для которого я его использую.Linux: пакетное переименование нескольких файлов в родительский dir + суффикс в порядке имени

Дерево:

└── main 
├── white tshirt 
│   ├── IMG_1.jpg 
│   ├── IMG_2.jpg 
│   ├── IMG_3.jpg 
│   └── IMG_4.jpg 
├── black tshirt 
│   ├── IMG_1.jpg 
│   ├── IMG_2.jpg 
│   ├── IMG_3.jpg 
│   └── IMG_4.jpg 
└── red tshirt 
    ├── IMG_1.jpg 
    ├── IMG_2.jpg 
    ├── IMG_3.jpg 
    └── IMG_4.jpg 

Цель:

└── main 
├── white tshirt 
│   ├── white-tshirt-1.jpg 
│   ├── white-tshirt-2.jpg 
│   ├── white-tshirt-3.jpg 
│   └── white-tshirt-4.jpg 
├── black tshirt 
│   ├── black-tshirt-1.jpg 
│   ├── black-thisrt-2.jpg 
│   ├── black-tshirt-3.jpg 
│   └── black-tshirt-4.jpg 
└── red tshirt 
    ├── red-tshirt-1.jpg 
    ├── red-tshirt-2.jpg 
    ├── red-tshirt-3.jpg 
    └── red-tshirt-4.jpg 

Замена пространства с тире не требуется, но предпочтительным. Платформа: Debian 8

+0

Вы считаете, что нанимаете программиста? – melpomene

+0

Есть ли место, где вы можете нанять программистов для фрагментов кода? – johnny538

ответ

1

Я думаю, что это должно сделать работу:

#!/bin/sh 

for dir in *; do 
    if [ ! -d "$dir" ]; then 
     continue 
    fi 

    cd "$dir" 

    pref=$(echo "$dir" | tr ' ' -) 

    i=1 
    ls -tr | while read f; do 
     ext=$(echo "$f" | sed 's/.*\.//') 
     mv "$f" "${pref}-${i}.$ext" 
     i=$(expr $i + 1) 
    done 

    cd .. 
done 

Вызывать скрипт внутри основного каталога и убедитесь, что только ваши целевые папки в нем. Также убедитесь, что ваши имена файлов не содержат символ '\'

+0

Это, вероятно, сбой, если в каком-либо из имен файлов есть пробелы. – melpomene

+0

Вы правы, спасибо. Исправлена. – UnrealEagle

+0

Похоже, что это не сработает, если в каком-либо из имен файлов есть обратная косая черта (или заканчиваются обратными косыми чертами?). – melpomene