Val*_*lva 72 linux script bash shell command-line
有没有一种聪明的方法来执行复制和移动操作或命令来复制文件,而不必在同一文件夹中执行cd, 然后mv在之后?
例如,我必须运行以下命令:
mv /folder1/folder2/folder3/file.txt /folder1/folder2/folder3/file-2013.txt
Run Code Online (Sandbox Code Playgroud)
请注意,我将文件移动到的目录是相同的,但我必须再次放置整个路径,有时会很烦人。我很想知道是否有另一种方法可以做到这一点而不必再次放置整个路径,因为操作将在同一路径中完成。
slh*_*hck 124
只需使用大括号扩展:
mv /folder1/folder2/folder3/{file.txt,file-2013.txt}
Run Code Online (Sandbox Code Playgroud)
这相当于写:
mv /folder1/folder2/folder3/file.txt /folder1/folder2/folder3/file-2013.txt
Run Code Online (Sandbox Code Playgroud)
当然,大括号扩展可以让您提供更多参数。你甚至可以通过范围到它,比如建立了几个测试文件夹,您可以运行mkdir test_{a..z},并开始猛砸4,您可以创建零填充序列以及,如touch foo{0001..3},创建foo0001,foo0002和foo0003。该击黑客维基有一对夫妇为你的例子的文章。
如果您必须使用两个不同的命令,cd请先使用子shell ,如@Ignacio's answer 中所示。
Ign*_*ams 74
在子 shell 中运行该操作。
( cd /folder1/folder2/folder3 && mv file.txt file-2013.txt )
Run Code Online (Sandbox Code Playgroud)
工作目录的更改不会传播到父 shell。
gle*_*man 21
如果你想要聪明,这里是 bash历史扩展
mv /folder1/folder2/folder3/file.txt !#:1:h/file-2013.txt
Run Code Online (Sandbox Code Playgroud)
我自己不会使用这个,因为我发现它不可能记住。我偶尔会使用vim 等效项,但几乎每次都必须查找它。
sjb*_*tha 11
您可以设置一个变量。当然,这有留下变量的副作用。
D=/folder1/folder2/folder3; mv $D/file.txt $D/file-2013.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4411 次 |
| 最近记录: |