Переименуйте несколько каталогов

Вы могли бы изменить дескрипторы файлов, присоединенные к тому процессу, но, в целом, делание так требует, чтобы использовались некоторые немного злые шутки. Целое понятие вполне приятно покрыто этим вопросом. Ли запущение программы как retty преуспеет в Вашем случае, зависит от того, как строго процесс контролирует состояние своих собственных дескрипторов файлов.

6
25.07.2012, 11:26
3 ответа
find . -depth -type d -name doc -exec sh -c 'mv "${0}" "${0%/doc}/Doc"' {} \;
7
27.01.2020, 20:24

В zsh можно использовать zmv функционируйте к массе - переименовывают файлы:

zmv '(**/)doc' '${1}Doc'

Если Вам назвали некаталоги doc, удостоверьтесь, что не соответствовали им путем добавления спецификатора шарика:

zmv -Q '(**/)doc(/)' '${1}Doc'
2
27.01.2020, 20:24

Если Ваше намерение состоит в том, чтобы использовать для своей выгоды каталог, и Вы используете bash 4 + это должно сделать:

find . -type d -name doc -print0 \
| while read -rd $'\0' file; do
    dname=$(dirname "$file")
    fname=$(basename "$file")
    mv "$file" "$dname"/"${fname^}"
  done

Отметьте использование \0 гарантировать корректную обработку необычных имен файлов.

Обновление

Поскольку jw013 указывает в комментариях ${var^} не работает, как я ожидал. Я исправил ответ, чтобы разделить путь к каталогу и имени файла и применяться ^ оператор только к $fname.

Btw, благодарит стремление добавить недостающий канал.

1
27.01.2020, 20:24
  • 1
    я не думаю ${var^} расширение делает то, к чему Вы хотите его. var=./foo/bar/doc; echo ${var^} дает ./foo/bar/doc. ^ расширение только влияет на первый символ. –  jw013 25.07.2012, 15:51
  • 2
    @jw013: Вы правы, я исправил ответ. –  Thor 25.07.2012, 16:22
  • 3
    . ├──, потому что │ └── документ ├── документ └── tt └── документ └── kk –  mzet 25.07.2012, 17:20
  • 4
    (Извините за вышеупомянутое). К сожалению, Ваше решение не работает на следующую структуру каталогов: mkdir -p dir1/doc/dir2. В этом случае даже при том, что каталог документа не является последним подкаталогом (требование Marc), это переименовано. –  mzet 25.07.2012, 17:31
  • 5
    Хорошо OP не указывал никакие другие критерии выбора, кроме того, -name doc, но если только листовые каталоги должны быть подобраны проверка это $dir только содержит . и .. подкаталоги могли быть сделаны. –  Thor 25.07.2012, 17:48

Теги

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