Как избежать копирования «..» при использовании команды cp в терминале?

Как избежать копирования «..» при использовании команды cp в терминале?

Я использую CentOS7 и когда я использую команду

cp /root/test/.* /root/test1

он также копирует ..все файлы и папки в родительском каталоге источника.

Как избежать копирования .и ..?

решение1

В вопросе прямо не указано, хотите ли вы скопироватьтолькоскрытые имена, или вы хотите скопировать все файлы. Аналогично, хотите ли вы скопировать содержимое любых подкаталогов. Я предполагаю, что вы хотите скопироватьтолькоскрытое имя — это текущий каталог (потому что именно это вы, похоже, и хотите сделать с помощью своей команды).

Ваша команда не скопирует все файлы в родительском каталоге, если вы также не используете -Rопцию with cp(или -rwith GNU cp) для рекурсивного копирования. Без -Rопции cpбудет жаловаться на то ., что и ..являются каталогами, но и не будет копировать их.

В bashоболочке установите GLOBIGNOREпеременную оболочки в :список имен с разделителями, в которые оболочка не должна расширять шаблоны подстановки имен файлов,

GLOBIGNORE='.:..'

затем скопируйте ваши файлы,

cp /root/test/.* /root/test1

Чтобы временно установить GLOBIGNOREтолько для операции копирования, используйте подоболочку:

( GLOBIGNORE='.:..'; cp /root/test/.* /root/test1 )

решение2

Стандартная идиома для подстановки всех имен, начинающихся с точки, за исключением и .. Таким образом, ваша команда будет...??*

cp /root/test/.??* /root/test1

Связанный контент