Переместите все подкаталоги и их содержание к текущему рабочему каталогу

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

например:

Я нахожусь в workingdir, внутри мы имеем folder1, folder2, folder3, и т.д.

теперь папка 1, 2, и 3 уже является основными каталогами в рамках рабочего каталога, но когда мы добираемся до folder4 существует подкаталог, в котором имеет то же имя folder4 затем содержание и это продолжаются folder5, folder6 на folder100andsomething.

То, что я хотел бы, должно выполнить команду для перемещения подкаталогов folder4 полностью к folder100andsomething наряду с их содержанием из родительских каталогов, и в рабочий каталог, таким образом, в конце я имел бы folder1 - folder100andsomething как основные каталоги и набор ошибочных пустых родителей. Для чистки я могу выполнить команду для удаления всех пустых родительских каталогов.

0
задан 4 March 2017 в 23:34

1 ответ

С find и rename:

$ find . -mindepth 3 | rename -n 's:([^/]+)/\1:$1:'  
./folder10/folder10/blah10 -> ./folder10/blah10
./folder9/folder9/blah9 -> ./folder9/blah9
./folder8/folder8/blah8 -> ./folder8/blah8
./folder7/folder7/blah7 -> ./folder7/blah7
./folder6/folder6/blah6 -> ./folder6/blah6
./folder5/folder5/blah5 -> ./folder5/blah5
./folder4/folder4/blah4 -> ./folder4/blah4

regex ([^/]+)/\1 соответствует тексту, который повторяется и имеет / промежуточный (так, folder4/folder4, и т.д.). Замена является просто частью, которая была повторена (так, всего folder4).

-n опция только показывает то, какие изменения будут внесены. Если изменения выглядят хорошо, то выполненными без него для фактического выполнения изменений.

0
ответ дан 3 November 2019 в 16:28

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

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