У меня есть два файла file1.txt
, flie2.txt
в каталоге X
. Я хочу скопировать эти файлы в мой текущий рабочий каталог, который находится далеко от каталога X
.
, поэтому я получаю команду вроде:
cp ~/Desktop/dir/dir/dir/dir/file1.txt ~/Desktop/dir/dir/dir/dir/file2.txt .
В любом случае можно ли использовать путь к каталогу один раз для обоих файлов, какой-то ярлык?
Я уверен, что есть есть, Ubuntu никогда не подводил мою лень: D
Использовать [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
получить больше идеи об этом.
Я использовал бы расширение фигурной скобки для такого рода вещи
cp -t ./ ~/Desktop/dir/dir/dir/dir/file{1..5}.txt
cp -t ./ ~/Desktop/dir/dir/dir/dir/{xx.x,yy.y}
Я использую Расширение Истории с 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 .
Вопрос, который задают, может быть решен при помощи следующей команды также.
cp ~/Desktop/dir/dir/dir/dir/file*.txt .
это скопирует любые файлы с файлом стиля именования (что-то промежуточное) .txt