在长路径中选择多个文件(括号扩展中的文件名完成?)

在长路径中选择多个文件(括号扩展中的文件名完成?)

有时我想运行一个命令,作为该命令的参数,我想提供位于文件系统层次结构深处的文件夹中的多个文件,例如:

command /this/is/a/long/path/foobar /this/is/a/long/path/quux

我希望我可以使用括号扩展,并且确实可以这样做:

command /this/is/a/long/path/{foobar,quux}

但是,文件名可能很长,我想使用文件名完成(TAB 键),但它似乎在括号内不起作用,有什么想法吗?

答案1

一个小解决方法:在 Bash 中,[Ctrl]+u从命令行开头到光标处删除,并将其放入内存中,然后将[Ctrl]+y其“拉”(粘贴)回去。

因此假设您想要运行该命令ls并将其作为参数文件提供./deep/below/directory/,您可以:

1)首先输入长目录名,前面加一个空格(这将节省以后的几个击键):( ./deep/below/directory/您可以[Tab]根据需要使用),然后输入[Ctrl]+u,这将删除它并将其保存在内存中(注意:如果是相对路径,则必须在目录名开头使用'./',否则 bash 不会在命令行开头自动完成目录名)

2)然后输入命令(及其选项),后跟空格:例如: ls -alFtr

3)使用[Ctrl]+y在这里提取长目录名,然后输入您要查找的文件名的开头,并[tab]像平常一样使用自动完成其名称(剪切的目录名仍然在内存中,可以重复使用)

4) 根据需要重复步骤 3) 多次

5)[Enter]

输入的时间很长,但使用起来更快^^,试试看!

相关内容