Это немного смущающий вопрос, но я должен признать, что в конце моей карьеры у меня все еще есть вопросы по поводу команды mv.
У меня часто возникает эта проблема: мне нужно рекурсивно переместить все файлы на один уровень вверх. Допустим, у меня есть папка foo и панель папок внутри нее. Бар имеет беспорядок файлов и папок, включая точечные файлы и папки. Как мне переместить все в баре на уровень foo?
Если foo пусто, я просто перемещаю bar на один уровень выше, удаляю foo и переименовываю bar в foo. Частично проблема заключается в том, что я не могу понять, что такое подстановочный знак mv для «всего, включая точки». Часть этого вопроса заключается в следующем: есть ли подробное обсуждение подстановочных знаков, которые где-то используют команды cp и mv (поиск в Google приводит только к базовым урокам).
источник
To eliminate the error caused by also matching "." and "..", use this command: mv bar/{,.[!.],..?}* .
Самый простой способ сделать это - сделать это двумя командами, потому что * не совпадает.
Вы не хотите использовать bar /.*, который я обнаружил при совершении этой ошибки:
Это плохая вещь. Кто-нибудь хочет угадать, почему? ;-)
источник
.*
до.
и..
. Zsh не для меня по крайней мере.Первое, что нужно знать о глобализации, - это делает оболочка, а не команда. Проверьте man-страницу вашей оболочки для всех деталей.
источник
Этот собирает все файлы из подпапок и перемещает их в текущий каталог
Если вы хотите перезаписать файлы с тем же именем, используйте
источник
mv .??* *
позаботится обо всем, кроме точки, за которой следует один символ. Если это характерно для вашей ситуации, вы можете добавить.[a-zA-Z0-9]*
. Это будет по- прежнему оставить файлы с такими именами, как.;
,.^
и.^I
(вкладка). Если вам нужно справиться со всем, вам нужно быть немного сложнее.источник
Если у вас есть структура каталогов,
/foo/bar/
и вы хотите переместить все файлы наbar
один шаг выше, перейдите вbar
каталог и введите следующее:Вообще, я думаю, что
cpio(1)
лучше для такого рода задач. Вы можете проверить подробную документацию, выпустивinfo cpio
в вашей оболочке.источник