Переименовать файлы в группе

У меня есть папка и структура файлов, например


Folder/1/fileNameOne.ext
Folder/2/fileNameTwo.ext
Folder/3/fileNameThree.ext
...

Как я могу переименовать файлы так, чтобы вывод получился


Folder/1_fileNameOne.ext
Folder/2_fileNameTwo.ext
Folder/3_fileNameThree.ext
...

Как этого можно добиться в Linux? оболочка?

1
задан 11 April 2013 в 19:20

1 ответ

Вот скрипт bash, который делает это:

Примечание. Этот скрипт не работает, если любое из имен файлов содержит пробелы.

#! /bin/bash

# Only go through the directories in the current directory.
for dir in $(find ./ -type d)
do
    # Remove the first two characters. 
    # Initially, $dir = "./directory_name".
    # After this step, $dir = "directory_name".
    dir="${dir:2}"

    # Skip if $dir is empty. Only happens when $dir = "./" initially.
    if [ ! $dir ]
    then
        continue
    fi

    # Go through all the files in the directory.
    for file in $(ls -d $dir/*)
    do
        # Replace / with _
        # For example, if $file = "dir/filename", then $new_file = "dir_filename"
        # where $dir = dir
        new_file="${file/\//_}"

        # Move the file.
        mv $file $new_file
    done

    # Remove the directory.
    rm -rf $dir
done
  • Скопируйте и вставьте скрипт в файл.
  • Сделайте его исполняемым, используя
chmod +x file_name
  • Переместите скрипт в каталог назначения. В вашем случае это должно быть внутри Folder/.
  • Запустите скрипт, используя ./file_name.
0
ответ дан 11 April 2013 в 19:20

Другие вопросы по тегам:

Похожие вопросы: