Вы можете найти исчерпывающий набор решений по этому поводу в ответе UNIX и Linux на вопрос Как переместить все файлы (включая скрытые) из одного каталога в другой? . Он показывает решения на Bash, zsh, ksh93, стандартном (POSIX) sh и т. Д.
Вы можете использовать эти две команды вместе:
mv /path/subfolder/* /path/ # your current approach
mv /path/subfolder/.* /path/ # this one for hidden files
Или все вместе ( спасибо pfnuesel ):
mv /path/subfolder/{.,}* /path/
Что расширяется до:
mv /path/subfolder/* /path/subfolder/.* /path/
(пример: echo a{.,}b
расширяется до a.b ab
)
Обратите внимание, что это покажет пару предупреждений:
mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory
Просто игнорируйте их: это происходит потому, что /path/subfolder/{.,}*
также расширяется до /path/subfolder/.
и /path/subfolder/..
, которые являются каталогом и родительским каталогом (см. Что означают «.» И «..» в папке? ).
Если вы хотите просто скопировать, вы можете использовать просто:
cp -r /path/subfolder/. /path/
# ^
# note the dot!
Это скопирует все файлы, как обычные, так и скрытые, поскольку /path/subfolder/.
расширяется до «всего из этого каталога» (Источник: Как скопировать с помощью cp, чтобы включить скрытые файлы и скрытые каталоги и их содержимое? )
cp -r /path/to/source/. /destination