Как переименовать много файлов одновременно, применив логику преобразования, например, изменив регистр? - PullRequest
0 голосов
/ 11 февраля 2011

Какой хороший инструмент для этого?Я использую Windows и у меня есть Cygwin, поэтому, если есть инструмент Unix или простое решение для сценариев, это будет работать для меня.

1 Ответ

0 голосов
/ 12 февраля 2011

На самом деле вы не предоставили много информации об именах файлов.

Предполагая, что вы хотите взять множество файлов и просто преобразовать их из прописных в строчные, вы можете сделать что-то вроде.

rename.sh


#!/bin/bash

# this script takes one argument, a filename.  If the file doesn't exist, we die.
# to accomodate files with spaces in the name, we'll grab $* as the filename.

filename="$*"

lowername=$( echo "$filename" | tr [A-Z] [a-z] )

if [ ! -f $filename ]; then
echo "File: $filename: file not found!"
exit 1  
fi

printf "%-70s" "Renaming $filename to $lowername: "
st=$( mv "$filename" "$lowername" 2>&1 )
if (( $? == 0 )); then
printf "%-8s\n" "[ ok ]" 
else
printf "%-8s\n" "[ err ]"
fi

Затем вы можете использовать этот скрипт с деревом каталогов файлов или подмножеством файлов, используя команду find.

find /some/directory/with/files -type f -name \*JPG -exec bash rename.sh {} \;

Теперь вы можете изменить аргументы 'tr' и аргументы 'find', чтобы настроить правила переименования, для которых файлы переименовываются и как они переименовываются.

...