У меня есть папка и структура файлов, например
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? оболочка?
Вот скрипт 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
.