Я только что потерял небольшую часть своей аудиоколлекции из-за глупой ошибки, которую я сделал. :-(
Я рад, что у меня была сравнительно недавняя резервная копия, но она все еще раздражала. Помимо твоей правды, другим виновником был вред 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
, это может быть тот, для которого у вас не было резервной копии.