具体示例的快捷方式

具体示例的快捷方式

我想将五个文件从该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
    大多数人发现引用更方便。
  • 当您处理当前目录中的文件(和目录)时,通常不需要使用./.当你(通常)需要这个时执行当前目录中的一个程序。这也是一个有用的技巧,可以防止文件名以破折号开头(-)。这是一个正常的角色里面一个文件名(例如, in Lettre 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

相关内容