как переименовать и переместить файлы в соответствии с именами каталогов?

У меня есть несколько каталогов, содержащих файл с таким же именем. Я хочу переместить эти файлы в другой каталог и в то же время переименовать их с именем каталога, чтобы они различались и не перезаписывались.

РЕДАКТИРОВАТЬ: Все каталоги находятся в одном каталоге. Пункт назначения - это один каталог в системе, который может быть любым. Мы читаем каталог и читаем файл из него, переименовываем его в точности как имя каталога и помещаем его в место назначения.

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

Большое спасибо

1
задан 15 April 2012 в 03:01

2 ответа

Предполагая, что имя файла этих файлов - thefilename, вы cd перешли в каталог, содержащий эти каталоги, и вы хотите переместить их в /path/to/dest, следующий цикл оболочки должен помочь

for file in */thefilename; do
    echo mv -iv "./$file" "/path/to/dest/${file%/*}"
done

Вы можете запустить это прямо в интерактивной оболочке или поместить в файл и запустить как скрипт.

Я добавил echo, чтобы он печатал только команды mv. Если выходные данные выглядят корректно, удалите echo и запустите его снова, чтобы он действительно сделал перемещение.

0
ответ дан 15 April 2012 в 03:01

Если вы используете bash, вы можете сделать следующее:

$ for i in *WhatEverMatchesYourOriginalDirectories*
do
  cd $i
  for j in *
  do
    mv $j ../Target/${i}-${j}
  done
  cd ..
done

Это переместит каждый файл в каталогах, соответствующих первому шаблону, в целевой каталог.

0
ответ дан 15 April 2012 в 03:01

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

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