Описание тега satisfaction-guaranteed
Прежде, чем объявить этот дубликат, считаю, что мне нужно это по определенной причине: групповое переименование (или скопировать с новым именем) древовидной структуры, которая содержит общую строку в именах файлов и каталогов. Вот пример (пробовал на Ubuntu 14.04, так что GNU инструменты):
компакт-диск в /tmp
команды mkdir иметь вид myproj
команды mkdir -Р примет вид myproj/myproj_AA/myproj_BB
сенсорный примет вид myproj/myproj_AA/myproj_BB/myproj_CC.дат
команды mkdir иметь вид myproj/myproj_AA/myproj_DD
сенсорный примет вид myproj/myproj_AA/myproj_DD/myproj_EE.дат
команды mkdir -Р примет вид myproj/myproj_XX/myproj_YY
сенсорный примет вид myproj/myproj_XX/myproj_YY/myproj_ZZ.дат
команды mkdir -Р примет вид myproj/myproj_XX/myproj_WW
сенсорный примет вид myproj/myproj_XX/myproj_WW/myproj_QQ.дат
иметь вид myproj дерево # визуализировать
Этот каталог структуры дерева
выглядит так:
иметь вид myproj
├── myproj_AA
│ ├── myproj_BB
│ │ └── myproj_CC.дат
│ └── myproj_DD
│ └── myproj_EE.дат
└── myproj_XX
├── myproj_WW
│ myproj_QQ─└─.дат
└── myproj_YY
└── myproj_ZZ.дат
6 каталогов, файлов: 4.
Итак, я хочу, чтобы все записи примет вид myproj/
, в том числе иметь вид myproj
себя переименован в myTESTproj
вместо того, чтобы иметь вид myproj
(там, где это может произойти как имя). Итак, сначала мне нужно получить список с относительные пути относительно текущей директории - и потом мне нужно все такие, что крайние детей (я думаю это равносильно файлов с длинной относительные пути, но не уверен) сначала (потому что если я переименовать/МВ каталог, во-первых, а потом пытаться переименовать файл в нем, он, вероятно, использовать старый Дир имя в качестве первого аргумента, а не с названия сейчас не изменилось).
Я знаю, есть ЛС-Р --группа-каталоги-первых иметь вид myproj/
использовать ЛС
рекурсивно и групповые каталоги, во-первых, но его вывод такой:
$ ЛС-Р --группа-каталоги-первых иметь вид myproj/
иметь вид myproj/:
myproj_AA myproj_XX
иметь вид myproj/myproj_AA:
myproj_DD myproj_BB
иметь вид myproj/myproj_AA/myproj_BB:
myproj_CC.дат
иметь вид myproj/myproj_AA/myproj_DD:
myproj_EE.дат
иметь вид myproj/myproj_XX:
myproj_WW myproj_YY
иметь вид myproj/myproj_XX/myproj_WW:
myproj_QQ.дат
иметь вид myproj/myproj_XX/myproj_YY:
myproj_ZZ.дат
... то есть, это не простой список с подпути, что я мог бы легко прокормить в то время как чтение Ф; делать ...
Ближайший я пришел, чтобы использовать найти
вместо:
$ найти иметь вид myproj/
иметь вид myproj/
иметь вид myproj/myproj_AA
иметь вид myproj/myproj_AA/myproj_DD
иметь вид myproj/myproj_AA/myproj_DD/myproj_EE.дат
иметь вид myproj/myproj_AA/myproj_BB
иметь вид myproj/myproj_AA/myproj_BB/myproj_CC.дат
иметь вид myproj/myproj_XX
иметь вид myproj/myproj_XX/myproj_YY
иметь вид myproj/myproj_XX/myproj_YY/myproj_ZZ.дат
иметь вид myproj/myproj_XX/myproj_WW
иметь вид myproj/myproj_XX/myproj_WW/myproj_QQ.дат
Так, вот у меня есть простой список из подпутей, однако он занимает корень первого узла к листовым узлам - и мне нужно первой вершины. И я стараюсь такие вещи, как найти иметь вид myproj/ | сортировки -н
, но, похоже, не делают разницы. Так что если я делаю что-то вроде:
$ найти иметь вид myproj/ | сортировки -н | а читать Ф; делать МВ -в $Ф $(Эхо $Ф | Е С/примет вид myproj/myTESTproj/г'); сделано
‘иметь вид myproj/’ -> ‘myTESTproj/’
МВ: не может стат ‘иметь вид myproj/myproj_AA’: нет такого файла или каталога
МВ: не может стат ‘иметь вид myproj/myproj_AA/myproj_BB’: нет такого файла или каталога
МВ: не может стат ‘иметь вид myproj/myproj_AA/myproj_BB/myproj_CC.дат’: нет такого файла или каталога
...
... после этого он рекурсивного переименования не сразу, в качестве корневого узла (каталог) переименован во-первых, и, таким образом, все дальнейшие ссылки на него являются недействительными.
Итак, как я могу получить правильное рекурсивное перечисление подкаталог с вершины первой, чтобы использовать его в пакетное переименование, как это?