Sooo Я никогда не использовал этот язык, но в настройках вы можете перейти на клавиатуру, щелкнуть по настройкам макета, на маленьком +, затем найти бенгали, и я могу видеть разные виды probhat, вы можете искать Dvorak внутри , но после нескольких тестов вы должны найти то, что хотите.
Использование только shell (bash) с небольшой помощью из mv:
#!/bin/bash
shopt -s globstar ##globstar will let us match files recursively
files=( /foo/bar/**/*.jpg ) ##Array containing matched files, mention where to search and what files here
for i in "${files[@]}"; do
d="${i%/*}" ##Parameter expansion, gets the path upto the parent directory
d_="${d##*/}" ##gets the name of parent directory
f="${i##*/}" ##gets the file name
echo mv "$i" "$d"/"${d_}""$f" ##renaming, remove echo after confirming what will be changed and you are good
done
Пример:
$ shopt -s globstar
$ files=( /foo/bar/**/*.jpg )
$ for i in "${files[@]}"; do d="${i%/*}"; d_="${d##*/}"; f="${i##*/}"; echo mv "$i" "$d"/"${d_}""$f"; done
mv /foo/bar/KT/633-ROYAL/4.jpg /foo/bar/KT/633-ROYAL/633-ROYAL4.jpg
mv /foo/bar/KT/633-ROYAL/5.jpg /foo/bar/KT/633-ROYAL/633-ROYAL5.jpg
mv /foo/bar/KT/633-ROYAL/6.jpg /foo/bar/KT/633-ROYAL/633-ROYAL6.jpg
mv /foo/bar/KT/633-ROYAL/BLUE-MULTI/1.jpg /foo/bar/KT/633-ROYAL/BLUE-MULTI/BLUE-MULTI1.jpg
mv /foo/bar/KT/633-ROYAL/BLUE-MULTI/2.jpg /foo/bar/KT/633-ROYAL/BLUE-MULTI/BLUE-MULTI2.jpg
mv /foo/bar/KT/633-ROYAL/BLUE-MULTI/3.jpg /foo/bar/KT/633-ROYAL/BLUE-MULTI/BLUE-MULTI3.jpg
Вот небольшой пример того, как это можно сделать из каталога, который вы хотите отредактировать.
$> ls
file1.txt file2.txt file3.txt
$> pwd
/home/xieerqi/testing_dir
$> find . -type f -printf "%f\0" | \
> while IFS="" read -d "" filename ; do \
> echo $filename ${PWD##*/}_$filename ; done
file2.txt testing_dir_file2.txt
file1.txt testing_dir_file1.txt
file3.txt testing_dir_file3.txt
Заменить echo на mv или cp для копирования или перемещения по необходимости [ ! d1]
Решение Bash, выполняемое из папки, в которую помещаются имена файлов, которые вы хотите изменить. Вы должны изменить workdir на ваш путь
#!/bin/bash
shopt -s globstar
workdir="/path/to/your/dir"
for folder in $workdir/**/*;do
if [[ -d "$folder" ]]; then
for file in "$folder"/*;do
if [[ -f "$file" ]]; then
fi="`basename "$file"`"
fo="`basename "$folder"`"
mv "$file" "$folder/$fo$fi"
fi
done
fi
done
Он будет ретранслировать все файлы во всех каталогах из вашего рабочего файла.
Вы можете сделать это с помощью rename:
rename -n 's/(.*)\//$1\/$1/' */*
Эта команда должна быть запущена в каталоге непосредственно над каталогами, которые вы хотите обработать. Сначала вы увидите список изменений, которые вы проверите, если вы довольны результатами, запустите его без -n для выполнения переименования.
$ tree
.
└── SOCH NC KT 633-ROYAL BLUE-MULTI
├── 1.jpg
├── 2.jpg
└── 3.jpg
$ rename 's/(.*)\//$1\/$1/' */*
$ tree
.
└── SOCH NC KT 633-ROYAL BLUE-MULTI
├── SOCH NC KT 633-ROYAL BLUE-MULTI1.jpg
├── SOCH NC KT 633-ROYAL BLUE-MULTI2.jpg
└── SOCH NC KT 633-ROYAL BLUE-MULTI3.jpg
rename 's/(.*)\//$1\/$1/' */*
s/a/b/ - s ubstitute a by b (.*)\/ - взять все, пока (кроме) не будет последней косой черты, сохраняющей ее как группу 1 и замените ее на [ f11] - группа 1 (имя dir), косая черта и группа 1 снова (префикс имени файла)