LINUX.ORG.RU

Заменить имя файла на имя каталога в котором он лежит

 , ,


0

1

Добыйр день. Есть много каталогов, подкотологов (глубина не известна) в любом каталоге и подкаталоге может находится файл.

Вопрос: как переименовать файл на имя каталога к отором он лежит?

Попытка решения: Первый шаг, переименовал все каталоги, заменил пробелы на «_»:

t=0 ;while find * -type d |grep " "; do find * -mindepth $t -prune -type d |grep " "| sed 's/^/"\.\//;s/$/"/'| sed 'p;s/ /_/g;'|sed 'N;s/\n/ /'|xargs -n2  mv; let "t=t+1" ;done​

получилось найти все файлы:

find * -type f

приме результата:

archive/Astra/mbox
archive/Directum/mbox
archive/JMS/mbox
archive/Kontur/diadoc.kontur/mbox
archive/Kontur/kontur-extern/mbox
archive/Kontur/Федореева/mbox
archive/Linux/mbox
archive/Smartcard_Required/mbox
archive/Tessis/mbox
archive/Банк_Клиент/mbox
archive/БЗ_СНФПО/mbox
archive/Блокхост_МДЗ/mbox
archive/Блокхост_ЭЦП/mbox
archive/Входящие/mbox
archive/ГИС/ArcSight/mbox
archive/ГИС/ArcSight/Ляхов/mbox
archive/ГИС/ArcSight/Романов/mbox
archive/ГИС/mbox
archive/ГИС/SAM/mbox
archive/ГИС/SAM/Бражник_Артём_Анатольевич/mbox
archive/ГИС/Сервисный_Центр_ГИC/mbox
archive/Госуслуги/mbox
archive/ГРЯЗЕМЕС/mbox
archive/Документы_АТС/mbox
archive/ИУС/Инструкции/mbox
archive/ИУС/ИУС_ПД_/mbox
archive/ИУС/ИУС_СУУЗ/mbox
archive/ИУС/ИУСПД_2_ошибки/mbox
archive/ИУС/МПУР/mbox
archive/ОТДЕЛ_СЗИ/mbox
archive/Отправленные/mbox
archive/ОхранаТруда/mbox
archive/Ошибки_синхронизации/mbox
archive/поддержка_москва/sap-callcentre@inform.gazprom.ru/mbox
archive/поддержка_москва/ServiceDesk@inform.gazprom.ru/mbox
archive/поддержка_москва/Лындин_Сергей_Анатольевич/mbox
archive/поддержка_москва/Москва/mbox
archive/портал/mbox
archive/Профком/mbox
archive/Профком/Д.В.Баранов/mbox
archive/Профком/Я.В.Сирота/mbox
archive/спец_отдел/mbox
archive/Удаленные/mbox
archive/Устройство_не_активно/10.45.159.173/mbox
archive/Устройство_не_активно/10.45.159.92/mbox
archive/Устройство_не_активно/10.45.200.62/mbox
archive/Устройство_не_активно/10.45.226.208/mbox
archive/Устройство_не_активно/10.45.41.44/mbox
archive/Устройство_не_активно/10.45.86.102/mbox
archive/Устройство_не_активно/10.45.86.42/mbox
archive/Устройство_не_активно/Acronis/mbox
archive/Устройство_не_активно/dc/mbox
archive/Устройство_не_активно/mbox
archive/Устройство_не_активно/Secret_Disk_4/mbox
archive/УФК_Контенент_ап/mbox
archive/УЦ_ГДН/mbox
archive/ЦЕХ_связи_№6/mbox

Вопрос: как переименовать файл на имя каталога к отором он лежит?



Последнее исправление: borlukos (всего исправлений: 3)

Ответ на: комментарий от gvlatyshev
find -type f -iname 'fid*'

эта строчка ничего не выдает.

немного подправил под себя:

find * -type f | while read f
do
  fdir=`dirname "$f"`
  fname=`basename "$fdir"`
  mv -b "$f" "$fdir"/"$fname"
done

Всё сработало спасибо большое!

borlukos
() автор топика