Скрипт для удаления среднего символа из нескольких каталогов, затем переименование файлов в подкаталогах, чтобы включить каталог + имя файла
У меня есть две цели, которые я пытаюсь достичь, и мне нужна помощь.
Вот обзор:
Существуют сотни папок / каталогов со случайными числами ( 5555#5555), содержащих один и тот же файл 001.pdf. Я бы хотел:
1: удалить символ "#" из каждой папки / каталога
2. Переименуйте файл 001.pdf, чтобы включить новые номера папок и файл 001.pdf.
Желаемый результат: папка 5555#5555
становиться 55555555
содержащий 001.pdf
файл, который становится 55555555.001.pdf
Надеюсь, что это имеет смысл и спасибо.
2 ответа
Решение
Так что обновляйте: спасибо за предложения. Вот что я получил, чтобы работать на меня. Не лучший путь, но эй.
curdir=`pwd`
for f in `find . -maxdepth 1 -type d -name "*#*" -print`;
do
echo "folder is $f"
newFolder=`echo $f | sed 's/#//g'`
echo mv $f $newFolder
mv $f $newFolder
echo newfolder is $newFolder
cd $newFolder
for file in `find . -maxdepth 1 -type f -printf '%f\n'`; do
echo "mv $file to ${newFolder}_$file"
mv $file ${newFolder}_$file
done
cd $curdir
done
for f in *#*;
do
newFolder=$(echo ${f//%})
mv $f $newFolder
newFile=$(printf $newFolder".001.pdf")
mv $newFolder/001.pdf $newFolder/$newFile
done
Это должно сделать это, хотя могут быть более элегантные решения. Измените регулярные выражения для цикла, если вы хотите перехватывать другие файлы без #
,