Перемещение файлов в subdir в другой каталог

В Ubuntu стандартным каталогом cgi-bin является /usr/lib/cgi-bin.

7
задан 29 February 2012 в 23:01

7 ответов

Предполагая, что текущий каталог имеет вложенные папки, замените TARGET_DIR в следующем утверждении:

find . -name '*.mp3' -exec mv {} TARGET_DIR \;
9
ответ дан 25 May 2018 в 23:38
  • 1
    Приятно, я знал, что это можно сделать, используя find, но мои знания о командах в unix где-то зарыты глубоко внутри. Благодаря! – Aerus 6 January 2011 в 14:57
  • 2
    @Aerus, пожалуйста. И не звучать претенциозно, но когда вы знаете, какую команду использовать, вы всего лишь команда man. от знания , как использовать его. – chris 6 January 2011 в 16:27
  • 3
    О, я знал , я мог найти все файлы в подкаталогах с помощью команды find, но я подумал, что тогда у меня будет список из них, который мне тогда нужно было обработать. Я забыл о exec, в основном, почему я не просмотрел справочную страницу для поиска :) (Конечно, если бы я проверил бы , я бы узнал о exec) – Aerus 6 January 2011 в 18:39
  • 4
    @Aerus Дайте mywiki.wooledge.org/UsingFind прочитанное. Это даст вам хорошее представление о том, для чего можно использовать другие задачи. – geirha 1 March 2012 в 02:27
  • 5
    С помощью GNU find вы можете избежать появления нового процесса mv для каждого файла для перемещения: find ../Music \( -name \*.mp3 -o -name \*.ogg \) -exec mv -t [TARGET_DIR] -- \{\} +. Альтернативно с POSIX find: find ../Music \( -name \*.mp3 -o -name \*.ogg \) -print0 | xargs -0 -- mv -t [TARGET_DIR] --. – David Foerster 21 December 2014 в 04:27

Попробуйте это:

 cd ../Music

 for i in `ls -Q`; do  mv $i/* /Path/To/Some/Other/Directory;   done

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

Edit: добавлено -Q (и необходимо добавить это объяснение, чтобы выйти за пределы шести символов)

2
ответ дан 25 May 2018 в 23:38
  • 1
    Я посмотрю, могу ли я использовать cp (я не знаю, есть ли у меня достаточно места на моем разделе ubuntu, потому что я считаю, что это 150 ГБ + музыки :)), спасибо за подсказку! – Aerus 6 January 2011 в 14:59
  • 2
    EEEK. Это на самом деле неверно, поскольку он не учитывает пробелы в именах файлов. Я редактировал в параметре -Q как ls ... – 0xC0000022L 1 March 2012 в 00:18
  • 3
    Никогда не разбирайте вывод. Используйте глобус. См. mywiki.wooledge.org/BashPitfalls – geirha 1 March 2012 в 02:24
  • 4
    smallo.ruhr.de/award.html#ls – David Foerster 21 December 2014 в 04:23

Первый ответ правильный, но более простой способ сделать это, предполагая, что у вас есть только один слой подкаталогов, есть:

mv ../Music/*/*.mp3 [insert target dest here]
0
ответ дан 25 May 2018 в 23:38
  • 1
    Это лучше использовать в качестве комментария. – Virusboy 21 December 2014 в 04:27
  • 2
    У меня недостаточно репутации, чтобы комментировать сообщения других, но, возможно, да. – argarevarg 21 December 2014 в 04:28
  • 3
    @Virusboy: Я думаю, что это правильный ответ, которого здесь еще не произошло. – David Foerster 21 December 2014 в 04:29

Вы также можете использовать Rhythmbox, banshee или аналогичное программное обеспечение. Они могут сканировать ваши музыкальные каталоги.

Вы можете сохранить каталог или (в вашем случае), программное обеспечение может переместить файлы в каталог rhythmbox / banshee, который устранит иерархию, как вы хотели. [ ! d1]

Затем

cp /target/directory/* /desination/directory/ -r

Затем удалите оригинал, если он был успешным.

0
ответ дан 25 May 2018 в 23:38
[F1]
0
ответ дан 25 May 2018 в 23:38
(cd ~/Music ; tar cf - ) | (cd /path/to/other/directory; tar xf -) 
0
ответ дан 4 August 2018 в 20:09

Первый ответ правильный, но более простой способ сделать это, предполагая, что у вас есть только один слой подкаталогов, есть:

mv ../Music/*/*.mp3 [insert target dest here]
0
ответ дан 7 August 2018 в 22:10

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

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