rda@MacBook-Pro X.WORK % ls
Assignment1.file Sec3 moremumbo.woot
FICTION.bak Test-1.bak mumble.txt
File-1.bat Test-1.txt mumbo.file
FundaOfIT.txt Text-1.xtxt myunix.txt
MyFave.txt Text-2.xtxt thistle.bak
Sec1 coursetext
Sec2 dooda.text
我需要将当前目录“X.WORK”中以字母“t”结尾的所有文件移动到子目录Sec3,如何使用 mv 命令将它们全部移动到一起?
如果它看起来确实很乱,我很抱歉,这是我的第一个问题,由于某种原因我无法让代码看起来更好更整洁。
答案1
这是基本的 shell 通配符:
mv ./*t Sec3/
贝壳 (不是 mv
- 这是一个非常重要的区别,非常值得记住)将其扩展为:
mv ./moremumbo.woot ./mumble.txt ./Test-1.txt ./FundaOfIT.txt ./Text-1.xtxt ./myunix.txt ./MyFave.txt ./Text-2.xtxt ./coursetext ./dooda.text Sec3/
(尽管可能已排序,但不是按该顺序。尝试使用echo
或ls -ld
代替以mv
查看排序顺序)
./
顺便说一句,即使没有必要,使用前缀也是个好习惯。这是为了防止不幸命名的文件被意外(或恶意)解释为选项mv
。例如,如果-t
目录中有文件名, *t
(没有./
前缀)将扩展以将其包含在参数列表中,并将mv
其解释为选项,而不是文件名。对于 GNU mv
,-t
( 的缩写--target-directory
)将下一个参数视为要将文件移动到的目标目录(它允许您将目标目录前其他参数,而不是在它们之后)。
/
在目录名称中使用尾随也是一个好习惯。当您打算将文件移动或复制(或 rsync 等)到目录中时,它可以防止意外覆盖或创建文件。