Форум — General mv файлов на один уровень вверх в файловой системе mv, script, shell 0 1 В папке x есть подпапки с файлами. Как перенести файлы из всех подпапок в папку x? Ссылка
Ответ на: комментарий от AVRS 21.06.21 22:53:50 MSK find и mv? Только есть проблемка, basename даже через xargs не пришпандоривается. anonymous (21.06.21 22:56:19 MSK) Показать ответы Ссылка
Ответ на: комментарий от anonymous 21.06.21 22:56:19 MSK Наверное, я не так понял. AVRS ★★ (21.06.21 23:00:46 MSK) Показать ответ Ссылка
Ответ на: комментарий от AVRS 21.06.21 23:00:46 MSK Наверное, я не так понял. Да так. Просто досадный факт, который решил упомянуть. Так то да, оверхэд. anonymous (21.06.21 23:03:12 MSK) Ссылка
можно еще так, находясь в папке x выполнить «find -type f -exec mv {} ../ ;» IvanR ★★★ (21.06.21 23:06:21 MSK) Последнее исправление: IvanR 21.06.21 23:06:49 MSK (всего исправлений: 1) Показать ответы Ссылка
Ответ на: комментарий от IvanR 21.06.21 23:06:21 MSK находясь в папке x А не находясь нельзя? find x -type f -exec mv {} x ; anonymous (21.06.21 23:09:04 MSK) Ссылка
Ответ на: комментарий от IvanR 21.06.21 23:06:21 MSK Надо переместить не в .. (x/..), а в . (x). Вопрос — что именно переместить. AVRS ★★ (21.06.21 23:30:30 MSK) Показать ответ Ссылка
Ответ на: комментарий от AVRS 21.06.21 23:30:30 MSK да, не вкурил с первого раза, в общем, вопрос выеденного яйца не стоит, пусть тс в /tmp посоздает файлы и папки, потренируется их переносить и ответит на свой вопрос. IvanR ★★★ (21.06.21 23:34:49 MSK) Ссылка
Ответ на: комментарий от anonymous 22.06.21 00:27:49 MSK Это откуда такие dir и move? AVRS ★★ (22.06.21 00:31:05 MSK) Последнее исправление: AVRS 22.06.21 00:32:07 MSK (всего исправлений: 2) Ссылка
cd ТВОЯ_ПАПОЧКА for d in $(find * -maxdepth 1 -type d); mv $d/* ./ BceM_IIpuBeT ★★☆☆☆ (22.06.21 11:34:37 MSK) Последнее исправление: BceM_IIpuBeT 22.06.21 11:41:33 MSK (всего исправлений: 3) Показать ответы Ссылка
Ответ на: комментарий от BceM_IIpuBeT 22.06.21 11:34:37 MSK Можно еще такcd ТВОЯ_ПАПОЧКА for d in $(find * -mindepth 1 -maxdepth 1 -type f); mv $d ./ BceM_IIpuBeT ★★☆☆☆ (22.06.21 14:09:51 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 21.06.21 22:56:19 MSK ... -exec sh -c "tar -capvf file-\$(basename {}).tar.bz2 {}" ... такое воде прокатит doc0 ★ (22.06.21 16:11:49 MSK) Ссылка
Ответ на: комментарий от BceM_IIpuBeT 22.06.21 11:34:37 MSK На оба варианта bash ругается: -bash: syntax error near unexpected token `mv’ eugrus ★★★★★ (01.08.21 02:30:41 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от eugrus 01.08.21 02:30:41 MSK mv --version BceM_IIpuBeT ★★☆☆☆ (01.08.21 11:28:39 MSK) Ссылка
Ответ на: комментарий от eugrus 01.08.21 02:30:41 MSK Не хватает do и done для bash: for d in $(find * -mindepth 1 -maxdepth 1 -type f); do mv $d ./ ; done Но не работает, если в имени файла пробел. Лучше так (находит файлы только в каталогах, но не их подкаталогах; а с -maxdepth 1 вообще ничего не делает): find -mindepth 2 -maxdepth 2 -type f -exec mv {} ./ \; Если надо из подкаталогов любой степени вложенности, то -maxdepth 2 убрать. AVRS ★★ (01.08.21 11:43:31 MSK) Последнее исправление: AVRS 01.08.21 11:46:36 MSK (всего исправлений: 3) Показать ответ Ссылка
в каталоге x: find | while read i; do mv "$i" .; done r0ck3r ★★★★★ (01.08.21 11:43:41 MSK) Показать ответы Ссылка
Ответ на: комментарий от AVRS 01.08.21 11:43:31 MSK Но не работает, если в имени файла пробел.Надо mv "$d" ./ BceM_IIpuBeT ★★☆☆☆ (01.08.21 11:50:34 MSK) Показать ответ Ссылка
Ответ на: комментарий от BceM_IIpuBeT 01.08.21 11:50:34 MSK find тоже, иначе имена разбивает for: for d in "$(find * -mindepth 1 -maxdepth 1 -type f)"; do mv "$d" ./ ; done И да, глубина 1 — правильно, а с 2 не работает (было mindepth 1, поэтому сработало). AVRS ★★ (01.08.21 11:53:01 MSK) Последнее исправление: AVRS 01.08.21 11:54:06 MSK (всего исправлений: 1) Показать ответ Ссылка
Ответ на: комментарий от r0ck3r 01.08.21 11:43:41 MSK Тогда mv -n BceM_IIpuBeT ★★☆☆☆ (01.08.21 11:54:33 MSK) Показать ответ Ссылка
Ответ на: комментарий от BceM_IIpuBeT 01.08.21 11:54:33 MSK Вот это в любом случае надо! Или -i. AVRS ★★ (01.08.21 11:55:54 MSK) Последнее исправление: AVRS 01.08.21 11:56:11 MSK (всего исправлений: 1) Ссылка
ТС, а зачем тебе это вообще? С такими советами уже бы сам нашёл или разобрался. AVRS ★★ (01.08.21 11:56:47 MSK) Последнее исправление: AVRS 01.08.21 11:58:21 MSK (всего исправлений: 1) Ссылка
Ответ на: комментарий от r0ck3r 01.08.21 11:43:41 MSK find -type f | while read i; do mv -n "$i" .; done BceM_IIpuBeT ★★☆☆☆ (01.08.21 11:58:29 MSK) Последнее исправление: BceM_IIpuBeT 01.08.21 12:01:18 MSK (всего исправлений: 1) Ссылка
Ответ на: комментарий от AVRS 01.08.21 11:53:01 MSK Это вообще не POSIX аргументы. Что-то я забыл про -n ключ у mv. Вот лучше: mv файлов на один уровень вверх в файловой системе (комментарий) BceM_IIpuBeT ★★☆☆☆ (01.08.21 12:01:07 MSK) Ссылка
Ответ на: комментарий от BceM_IIpuBeT 22.06.21 14:09:51 MSK Господи, жесть какая. Почему никто не сделает аналог mv с регулярками? anonymous (01.08.21 12:02:00 MSK) Показать ответы Ссылка
Ответ на: комментарий от anonymous 01.08.21 12:02:00 MSK Сделай. BceM_IIpuBeT ★★☆☆☆ (01.08.21 12:04:11 MSK) Ссылка
Ответ на: комментарий от anonymous 01.08.21 12:02:00 MSK Если у вас есть проблема и вы захотели решить ее с помощью регулярных выражений, то теперь у вас две проблемы. NightSpamer ★ (01.08.21 12:49:10 MSK) Ссылка
Ответ на: комментарий от lealxe 01.08.21 12:36:11 MSK Удивительно, но факт: сработало! 👍 eugrus ★★★★★ (06.08.21 22:17:14 MSK) автор топика Ссылка
Ответ на: комментарий от IvanR 21.06.21 22:58:23 MSK А точно не «./* ./»? ../ же на уровень вверх относительно папкм х будет. Dog ★★★ (06.08.21 22:26:38 MSK) Показать ответы Ссылка
Ответ на: комментарий от Dog 06.08.21 22:26:38 MSK https://www.youtube.com/watch?v=Q3ekDKtvDW4 eugrus ★★★★★ (06.08.21 23:33:19 MSK) автор топика Ссылка
Ответ на: комментарий от Dog 06.08.21 22:26:38 MSK Тс из подпапок просит, а там, хрен знает, стек тоже сверху вниз растет IvanR ★★★ (07.08.21 00:42:32 MSK) Ссылка