Я только что потерял небольшую часть своей аудиоколлекции из-за глупой ошибки, которую я сделал. :-(
Я рад, что у меня была сравнительно недавняя резервная копия, но она все еще раздражала. Помимо твоей правды, другим виновником был вред mv, который будет выглядеть следующим образом:
Аудиофайлы имели определенную схему:
ARTIST - Some Title YY.mp3
где YYуказывается двухзначная годовая спецификация.
mkdir 90<invisible control character>
(До этого момента я не знал, что на самом деле набрал треть лишних символов, которые были невидимы ...!)
Вместо того, чтобы хранить все в одном каталоге, я хотел, чтобы вся музыка 1990-х годов была в одном каталоге. Поэтому я напечатал:
find . -name '* 9?.mp3' -exec mv {} 90 \;
Не так сложно понять, что случилось, а? : ->
Результатом (катастрофического) был пустой каталог с именем «90 что - то » (с чем-то, что является «невидимым» управляющим символом) и один единственный файл с именем «90», перезаписанный n раз.
ВСЕ ФАЙЛЫ Ушли. : - (((очевидно)
Желания mvбы я проверил вовремя ли подпись «файл» назначения (помните о * NIX: Все это файл ) начинается с d------(например drwxr-xr-x). И, конечно же , является ли адресат существует вообще. Существует вариант вышеупомянутого сценария, когда вы просто забыли вmkdir директорию первым. (но, конечно, вы предположили, что это там ...)
Даже наша ОС животное-ненависть , начиная с капиталом W Имеет ли это сделать. Вы даже получаете запрос указать тип места назначения (файл? Каталог?), Если вы попросите об этом.
Следовательно, мне интересно, если мы * NIXers все еще должны написать себе « mvскриптлет», просто чтобы избежать подобных нежелательных сюрпризов.
mvздесь не проблема, технически, он не знает, что вы перемещаете ряд файлов. Вы запускаете mvодин раз для каждого файла. Вот так и find -exec ;работает. Если бы вы использовали find -exec +(как в некоторых комментариях) крикнул mv бы , как только он получил более одного аргумента.
mvдля каждого отдельного файла на первый взгляд может показаться немного менее продуманным, он (как я уже говорил ранее) будет единственным разумным решением, когда исходные файлы будут разбросаны по разным подкаталогам. То, что в моем тестовом примере исходные файлы были в одном каталоге, не означает, что это мой настоящий тестовый пример. На самом деле это просто упрощение, потому что позже я могу сам уточнить это самостоятельно. Плюс, это делает вопросы менее трудоемкими для чтения из-за их уменьшенной длины. :)
mvчто пункт назначения существует? mv oldfile newfileэто способ переименовать файл, и глупо ожидать, newfileчто он уже существует и будет каталогом.
.mp3должен быть там с именем90, это может быть тот, для которого у вас не было резервной копии.