终端:避免多次重复目录以访问其中的文件

Moh*_*mel 4 command-line bash

我有两个文件file1.txtflie2.txt在一个目录中X。我想将这些文件复制到远离目录的当前工作目录中X

所以我最终得到一个命令:

cp ~/Desktop/dir/dir/dir/dir/file1.txt ~/Desktop/dir/dir/dir/dir/file2.txt .
Run Code Online (Sandbox Code Playgroud)

无论如何,是否可以为两个文件使用一次目录路径,某种快捷方式?
我确信有,Ubuntu 从未辜负我的懒惰 :D

hee*_*ayl 5

使用[1-2]指示的文件,此用途bash的范围扩展功能:

cp ~/Desktop/dir/dir/dir/dir/file[1-2].txt .
Run Code Online (Sandbox Code Playgroud)

此处范围[1-2]将扩大,因此file[1-2].txt将扩大到file1.txtfile2.txt

请注意,如果您有多个这样的文件,它们的名称中有不同数量的数字:

file1.txt file12.txt file980.txt file0.txt file23.txt 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用 的extglob特性bash来启用扩展模式匹配:

$ shopt -s extglob

$ cp ~/Desktop/dir/dir/dir/dir/file+([0-9]).txt .
Run Code Online (Sandbox Code Playgroud)

extglob 模式+([0-9])将匹配文件名之间file.txt文件名中的一位或多位数字。

另请注意,它不依赖于任何前缀或后缀,例如,如果您有具有名称的文件:

1 02 043 908
Run Code Online (Sandbox Code Playgroud)

这些也可以通过以下方式匹配(和复制):

$ cp ~/Desktop/dir/dir/dir/dir/+([0-9]) .
Run Code Online (Sandbox Code Playgroud)

检查man bash以获得更多的想法。