Terminal: Избегайте многократного повторения каталогов для достижения файлов в

У меня есть два файла file1.txt, flie2.txt в каталоге X. Я хочу скопировать эти файлы в мой текущий рабочий каталог, который находится далеко от каталога X.

, поэтому я получаю команду вроде:

cp ~/Desktop/dir/dir/dir/dir/file1.txt ~/Desktop/dir/dir/dir/dir/file2.txt .

В любом случае можно ли использовать путь к каталогу один раз для обоих файлов, какой-то ярлык?
Я уверен, что есть есть, Ubuntu никогда не подводил мою лень: D

4
задан 17 May 2015 в 23:44

4 ответа

Использовать [1-2] для указания на файлы это использует bashфункция расширения диапазона:

cp ~/Desktop/dir/dir/dir/dir/file[1-2].txt .

Здесь диапазон [1-2] расширится так file[1-2].txt расширится до file1.txt и file2.txt.

Обратите внимание на это, если у Вас есть несколько файлов как это с различным количеством числовых цифр среди их имен:

file1.txt file12.txt file980.txt file0.txt file23.txt 

В этом случае используют extglob функция bash включить расширенное сопоставление с образцом:

$ shopt -s extglob

$ cp ~/Desktop/dir/dir/dir/dir/file+([0-9]).txt .

extglob шаблон +([0-9]) будет соответствовать одной или нескольким цифрам между file и .txt в именах файлов.

Также обратите внимание, что это не зависит ни от какого префикса или суффикса, например, если у Вас есть файлы, имеющие имена:

1 02 043 908

Они могут быть подобраны (и скопированы), также:

$ cp ~/Desktop/dir/dir/dir/dir/+([0-9]) .

Проверить man bash получить больше идеи об этом.

5
ответ дан 17 May 2015 в 23:44

Я использовал бы расширение фигурной скобки для такого рода вещи

cp -t ./ ~/Desktop/dir/dir/dir/dir/file{1..5}.txt

cp -t ./ ~/Desktop/dir/dir/dir/dir/{xx.x,yy.y}    
0
ответ дан 17 May 2015 в 23:44

Я использую Расширение Истории с Word Designators много. !$ будет определять последний аргумент предыдущей команды.

В большинстве случаев я смотрю в ту папку с ls сначала перед привыканием.

$ ls ~/Desktop/dir/dir/dir/dir
file1.txt    file2.txt
$ cp !$/file1.txt !$/file2.txt .
cp ~/Desktop/dir/dir/dir/dir/file1.txt ~/Desktop/dir/dir/dir/dir/file2.txt .

, Как Вы видите, удар автоматически заменил !$ последним аргументом предыдущей команды.

можно даже использовать части того аргумента. !$:h (h для головы) определял бы dirname последнего аргумента. !$:t (t для хвоста) определял бы базовое имя последнего аргумента.

Так, при чтении файла прежде с less Вы сделали бы

$ less ~/Desktop/dir/dir/dir/dir/file1.txt
$ cp !$ !$:h/file2.txt .
cp ~/Desktop/dir/dir/dir/dir/file1.txt ~/Desktop/dir/dir/dir/dir/file2.txt .
0
ответ дан 17 May 2015 в 23:44

Вопрос, который задают, может быть решен при помощи следующей команды также.

cp ~/Desktop/dir/dir/dir/dir/file*.txt .

это скопирует любые файлы с файлом стиля именования (что-то промежуточное) .txt

0
ответ дан 17 May 2015 в 23:44

Другие вопросы по тегам:

Похожие вопросы: