Сzsh
:
autoload zmv # best in ~/.zshrc
cd "Folder 1"
n=0; zmv -n '**/Item.<->(#qn^/)' 'Item ${(l:2::0:)$((++n))}'
(снять-n
(для пробной работы -запустить )при хорошем состоянии ).
<->
:любая последовательность десятичных цифр(<x-y>
без границы)(#qn)
:для числовой сортировки (поэтому Subfolder 10
идет послеSubfolder 2
). ^/
:исключить файлы типа каталог . ${(l:2::0:)var}
:левая -закладка (и обрезать, если больше)$var
с 0
s до длины 2. Предупреждение :в то время как глобус **/
предназначен для соответствия любому уровню подкаталога, включая пустой уровень, поэтому файлы в текущем каталоге соответствуют, в zmv
это не так из-за двойного передайте это с шаблоном, один раз для подстановки, а второй раз как простое сопоставление с шаблоном для извлечения групп захвата (, а затем тот второй **/Item
, когда шаблон -совпал из-за отсутствия/
).
Обходной путь заключается в использовании:
zmv -n '(**/)Item.<->(#qn^/)' 'Item ${(l:2::0:)$((++n))}'
или:
zmv -wn '**/Item.<->(#qn^/)' 'Item ${(l:2::0:)$((++n))}'
, но затем zmv
обнаруживает рекурсивное совпадение и включает глубину -первого порядка (, чтобы можно было безопасно переименовывать каталоги ). Если вам не нужны файлы первого порядка и соответствия depth -в текущем каталоге,вы можете использовать полную форму**/
((*/)#
):
zmv -n '(*/)#Item.<->(#qn^/)' 'Item ${(l:2::0:)$((++n))}'
Включено:
.
├── Subfolder 1
│ ├── Item.01
│ ├── Item.02
│ └── Subsubfolder
│ └── Item.01
├── Subfolder 10
│ ├── Item.01
│ └── Item.02
└── Subfolder 2
├── Item.01
└── Item.02
Дает:
mv -- Subfolder\ 1/Item.01 Item\ 01
mv -- Subfolder\ 1/Item.02 Item\ 02
mv -- Subfolder\ 1/Subsubfolder/Item.01 Item\ 03
mv -- Subfolder\ 2/Item.01 Item\ 04
mv -- Subfolder\ 2/Item.02 Item\ 05
mv -- Subfolder\ 10/Item.01 Item\ 06
mv -- Subfolder\ 10/Item.02 Item\ 07
Файл authorized_keys
нужно поместить в $HOME/.ssh
. В вашем случае для пользователя root это должно быть /root/.ssh/authorized_keys
.