Сортировка файлов командной строки, копирование

Скопировано из моего терминала.,,

dan@Silver:/media/dan/RAID/MUSIC$ grep -r '.mp3' ./ > cp *.mp3 /home/dan/Music/
grep: input file ‘./cp’ is also the output

У меня есть музыкальная коллекция на томе NTFS, которую я хочу отсортировать и перенести в новую настройку Ubuntu. Команды, приведенные выше, были предназначены для глубокого поиска в 6 или 7 каталогах ("cp -r" не будет) и копирования ТОЛЬКО тех файлов, которые заканчивались на.mp3.

Понятия не имею, о чем говорит grep. Любая помощь доступна для новичка?

3 ответа

Решение

Правильный инструмент командной строки для этой работы find например

find -iname '*.mp3' -type f -execdir cp -t /home/dan/Music/ -- {} +

-iname тест будет соответствовать без учета регистра, т.е. .MP3 так же как .mp3 - Я не уверен, важно ли это для файловых систем NTFS. Вы могли бы использовать -name вместо.

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

Частично проблема заключается в том, что с помощью ">" вы перенаправляете вывод команды grep в файл с именем "cp" вместо использования канала "|" к команде "cp".

Однако большая проблема в том, что ваша команда grep, вероятно, никогда не возвращает (или, возможно, ничего не возвращает), так как вы используете grep -r '.mp3' ./ вместо grep '.mp3' -r ./ Кроме того, я думаю, что grep, вероятно, ищет.mp3 в содержимом файлов, а не в именах файлов.

пытаться:

cd /media/dan/RAID/MUSIC
find . -name '*.mp3'

если в этом списке перечислены все файлы, которые вы хотите скопировать, попробуйте:

find . -name '*.mp3' -exec cp --parents "{}" /home/dan/Music \;

--exec запускает команду для каждого файла, соответствующего find, --parents сохраняет полный путь к файлу (иначе все файлы будут скопированы в /home/dan/Music вместо /home/dan/Music/subdir1 и т. д.), {} ссылается на текущий сопоставленный файл. Я поместил в кавычки, потому что аудио файлы часто содержат пробелы. \; как вы завершаете команду для --exec

Надеюсь это поможет. Даже если это не так, я настоятельно рекомендую вам заглянуть в справочную страницу для поиска и, возможно, xargs, которые представляют собой мощную комбинацию, в которой вы можете перенаправить вывод команды find в xargs.

Найти пользовательский пакет функций bash:

https://github.com/Kiran-Bose/supreme

Загрузите и установите файл deb для систем на основе Debian.

Обзор функциональности

(1) Открытые приложения ----Firefox ---- Калькулятор ---- Настройки

(2) Управление файлами ---- Поиск ---- Навигация ---- Быстрый доступ

            |----Select File(s)
            |----Inverse Selection
            |----Make directory
            |----Make file
                                          |----Open
                                          |----Copy
                                          |----Move
                                          |----Delete
                                          |----Rename
                                          |----Send to Device
                                          |----Properties

(3) Управление телефоном ---- перемещение / копирование с телефона ---- перемещение / копирование на телефон ---- синхронизация папок

(4) Управление USB ---- перемещение / копирование с USB ---- перемещение / копирование на USB

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