2

Я искал ответ на вопрос, как переместить файлы из одной папки в верхнюю папку, и нигде не нашел ответа mv name/* .

Почему я не могу использовать это для перемещения файлов в верхнюю папку? Самым популярным вариантом является mv * .[^.]* .. , поэтому мой вопрос, почему mv name/* . неправильно?

С уважением

2 ответа2

2

Из-за болтовни. mv name/* . сопоставляет только те файлы в папке, которые не начинаются с точки (.). Вы можете изменить это поведение, установив dotglob в оболочке bash:

shopt -s dotglob

Теперь вы можете использовать mv name/* . переместить ВСЕ файлы и папки.

Например, есть папка, содержащая два файла: file и .file:

$ echo *
file
$ shopt -s dotglob
$ echo *
file .file

Обратите внимание: mv * .[^.]* destination работает без точечного глобуса, потому что он совпадает с первым * и вторым .[^.]* который соответствует файлам / папкам, начинающимся с точки (не . и ..).

0

Вам также может потребоваться сопоставить .* Не только * если архив содержит точечные файлы.

Также добавьте в конец && rmdir folder , чтобы удалить ненужную папку. Это сохранение, потому что оно будет работать только в том случае, если mv вернет успех И потому, что rmdir не удалит непустой каталог.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .