Скопирован с моего терминала. , .
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 , Любая помощь, доступная новичкам?
Я не уверен, что вы имеете в виду для сортировки, если вы не хотите менять макет каталога, но вот почему он не работает ...
Часть проблемы заключается в том, что с помощью '>' вы перенаправляете вывод команды grep в файл под названием 'cp' вместо того, чтобы использовать канал '|' к команде «cp».
Однако большая проблема заключается в том, что ваша команда grep, вероятно, никогда не возвращается (или, возможно, ничего не возвращает), поскольку вы используете grep -r '.mp3' ./ вместо grep '.mp3' -r ./. Кроме того, я Представьте, что grep, вероятно, ищет .mp3 в содержимом файлов, а не в именах файлов.
try:
cd /media/dan/RAID/MUSIC
find . -name '*.mp3'
, если в нем перечислены все файлы, которые вы хотите скопировать , попробуйте:
find . -name '*.mp3' -exec cp --parents "{}" /home/dan/Music \;
команда --exec запускает команду для каждого файла, сопоставляемого find, --parents сохраняет полный путь к файлу (в противном случае все файлы будут скопированы в / home / dan / Музыка вместо / home / dan / Music / subdir1 и т. Д.), [F7] относится к текущему совпадающему файлу. Я поставил кавычки вокруг него, потому что в аудиофайлах часто есть пробелы. \; - это то, как вы завершаете команду для --exec
. Надеюсь, это поможет. Даже если это не так, я настоятельно рекомендую вам заглянуть в страницу man для поиска и, возможно, xargs, которые являются мощной комбинацией, где вы можете вывести вывод find на xargs