У мене є папкаА, яка містить папкуB, яка містить багато файлів. Я хотів би позбутися папкиB, але не її вмісту. Я хочу, щоб цей вміст знаходився всередині папкиA. Як я можу це зробити в командному рядку?
У мене є папкаА, яка містить папкуB, яка містить багато файлів. Я хотів би позбутися папкиB, але не її вмісту. Я хочу, щоб цей вміст знаходився всередині папкиA. Як я можу це зробити в командному рядку?
Відповіді:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
mv folderB/.* .щоб перемістити їх. @NewLinuxUser, точка у вашому запитанні - псевдонім робочого каталогу (у цьому випадку папкаA).
folderB/folderBіснує, тому остерігайтеся використання його в сценаріях.
folderBмістить шалену кількість файлів. Ви побачите bash: /bin/mv: Argument list too longчерез використання *. Якщо це так, використовуйте mvв поєднанні з findзаявою @amphetamachine або зfor loop
Швидка відповідь:
cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB
Відповідь на код:
cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"