我想将五个文件从该Documents
目录移动到另一个目录,而不显式写入每个文件。有我可以使用的快捷方式(例如使用数字)吗?
我不想做这样的事情:
mv ./Documents/Curriculum Vitae (Francais).pdf ./Anotherdirectory
mv ./Documents/Lettre de motivation - Candidature Agent Soutien technique.pdf ./Anotherdirectory
mv ./Documents/Lettre_de_reference_1.pdf ./Anotherdirectory
mv ./Documents/Lettre_de_reference_2.pdf ./Anotherdirectory
mv ./Documents/Lettre_de_reference_3.pdf ./Anotherdirectory
或者
mv ./Documents/Curriculum Vitae (Francais).pdf ./Documents/Lettre de motivation - Candidature Agent Soutien technique.pdf ./Anotherdirectory ./Documents/Lettre_de_reference_1.pdf ./Documents/Lettre_de_reference_2.pdf ./Documents/Lettre_de_reference_3.pdf ./Anotherdirectory
如果我可以将一个数字(例如mv ./Documents/1;2;3;4;5 ./Anotherdirecotry
)与每个文件关联起来,并且每次只使用这些数字而不是整个路径,那么应该会更方便。
为了解决我的问题,我需要知道的是如何引用这些文件?
jeremie@jeremie-MacBookPro ~> ls ./Documents
Curriculum_Vitae/
Curriculum Vitae (Francais).pdf
Lettre de motivation - Candidature Agent Soutien technique.pdf
Lettre_de_reference_1.pdf
Lettre_de_reference_2.pdf
Lettre_de_reference_3.pdf
我想我可以使用美元符号引用一个文件。所以我想访问该文件 Curriculum Vitae (Francais).pdf
,我可以使用该命令ls ./Documents/$2
。
答案1
许多 Unix/Linux 命令允许您在单个命令中指定多个文件名。因此,只要您希望所有文件都到达同一目的地,就不需要使用五个单独的命令;你可以说
mv "./Documents/Curriculum Vitae (Francais).pdf" "./Documents/Lettre de motivation - Candidature Agent Soutien technique.pdf" ./Documents/Lettre_de_reference_1.pdf ./Documents/Lettre_de_reference_2.pdf ./Documents/Lettre_de_reference_3.pdf ./Anotherdirectory
笔记:
- 由于命令中的多个“单词”通常被视为单独的文件名,因此您必须执行一些特殊操作才能使软件将其视为
./Documents/Curriculum Vitae (Francais).pdf
单个文件名而不是三个文件名。事实上,有几个字符是特殊的,必须以特殊的方式处理才能将它们用作文件名的一部分 - 这些字符包括,&
,*
,(
,)
,{
,}
,[
,]
,|
,\
,;
,'
,"
,<
,>
,?
,!
,有时还有$
。处理它们的最简单方法是将它们括在引号中:双引号,如上所示,或单引号:`
~
'./Documents/简历(法语).pdf'
(对于某些字符,规则会变得更加复杂。)另一种方法是\
在每个特殊字符之前添加反斜杠 ( );例如,./Documents/Curriculum\ 简历\ \(法语\).pdf
大多数人发现引用更方便。 - 当您处理当前目录中的文件(和目录)时,通常不需要使用
./
.当你(通常)需要这个时执行当前目录中的一个程序。这也是一个有用的技巧,可以防止文件名以破折号开头(-
)。这是一个正常的角色里面一个文件名(例如, inLettre de motivation - Candidature Agent Soutien …
),但在开头它将被解释为一个选项。处理以破折号开头的文件名的另一种方法是添加双破折号(--
) 在第一个文件名之前;例如,MV[选项]--文件1文件2文件3文件4文件5目标目录
但这并不总是有效。
如果你想搬家全部将文件.pdf
从当前目录复制到子目录中,可以这样做
mv -- *.pdf Anotherdirectory
请注意,您必须不是在这里将其放入*
引号中。这次你想以获得特殊含义,即“与此模式匹配的所有文件”。
当几个文件名非常相似时,您可以使用其他一些技巧,包括:
mv -- … Documents/Lettre_de_reference_?.pdf Anotherdirectory
和
mv -- … Documents/Lettre_de_reference_[123].pdf Anotherdirectory
和
mv -- … Documents/Lettre_de_reference_[1-3].pdf Anotherdirectory
和
mv -- … Documents/Lettre_de_reference_{1,2,3}.pdf Anotherdirectory
和
mv -- … Documents/Lettre_de_reference_{1..3}.pdf Anotherdirectory
阅读手册以了解它们有何不同。
答案2
mv ./Documents/file{1..5} ./Anotherdirectory
答案3
由于您的要求非常具体,我建议您创建一个如下所示的函数:
mymv(){ mv ./Documents/"$1" ./Anotherdirectory; }
$1
这里代表函数的第一个参数。
定义函数后,每次要移动文件时,请使用:
mymv FILE