Была похожая проблема на почтовом сервере, просто поместите этот список в текстовый файл file01.txt
, затем примените следующую команду:
cat file01.txt | sed 's/[ \t]/;/g' > file02.txt
Вы не делаете то же самое с mv
как с rm
. Посмотрите на аргументы пути, которые вы им даете:
rm -rf "/home/user/project/uploads/media/*"
mv "/home/user/project/uploads/media" ...
"/home/user/project/uploads/media/*"
заключен в кавычки, поэтому *
не является особенным и будет передан rm
как есть. Далее он удаляет файл, который буквально называется /home/user/project/uploads/media/*
. Там, вероятно, не один. Вы не получите сообщение об ошибке, потому что вы использовали флаг -f
, который сообщает rm
«Игнорировать несуществующие файлы и отсутствующие операнды и никогда не запрашивать у пользователя». (как сказано в руководстве GNU).
Спецификация POSIX еще более подробно описывает -f
запрет любых сообщений об ошибках или предупреждений:
For each file the following steps shall be taken:
- If the file does not exist:
a. If the -f option is not specified, rm shall write a diagnostic message to standard error.
b. Go on to any remaining files.
Если вы не использовали -f
,он сказал бы что-то вроде:
rm: cannot remove '/home/user/project/uploads/media/*': No such file or directory
Или, если вы сделаете то же самое с mv
, как и в mv "/home/user/project/uploads/media/*"...
, он будет жаловаться, даже с mv -f
.
Даже без кавычек, /home/user/project/uploads/media/*
, это не то же самое, что /home/user/project/uploads/media
. Другой расширяется до списка всех файлов в каталоге (, кроме точечных файлов, обычно ), а другой называет сам каталог. Помимо точечных файлов, есть разница в том, что rm -r.../media/*
оставит сам каталог media
, а rm -r.../media
также удалит его.
Вы не показали, как запускали его в интерактивном режиме, но держу пари, что вы не цитировали глобус.