Как использовать * для включения четных точечных файлов

#command-line

#командная строка

Вопрос:

В настоящее время у меня есть пример кода, который выглядит так

 git clone repo/ ./tmp
mv ./tmp/* .
 

При использовании * он не включает точечные файлы

Как я могу включить точечные файлы, используя *

Ответ №1:

Короткая версия заключается в том, что вы не можете. Масштабирование файлов ( * ) не включает dot-файлы, поэтому вам нужно будет изменить код вашей оболочки, чтобы поддерживать это поведение (или, что более вероятно, отказаться от поддержки существующего поведения), чего вы, вероятно, не собираетесь делать, и вы определенно не хотите делать, из-за двух точечных файлов.-файлы в каждом каталоге, . и .. это доставит вам неприятности.

Вместо этого вы захотите переместить файлы отдельно, что-то вроде:

 mv ./tmp/* .
mv ./tmp/.??* .
 

Во второй строке отображаются точечные файлы, которые не являются только текущим или родительским каталогом.

Если вам (по какой-либо причине) нужно, чтобы это произошло в одной команде или у вас есть более сложные критерии для работы, вы можете захотеть исследовать find -exec аргумент ‘s, который позволяет запускать команду практически для любого списка файлов, сгенерированного по времени, содержимому, имени или множеству других характеристик.