Сортировка файлов командной строки, копирование
Скопировано из моего терминала.,,
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