![在同一目录中移动多个同名文件](https://linux22.com/image/99655/%E5%9C%A8%E5%90%8C%E4%B8%80%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%A7%BB%E5%8A%A8%E5%A4%9A%E4%B8%AA%E5%90%8C%E5%90%8D%E6%96%87%E4%BB%B6.png)
我有一个包含多个同名文件的目录。
../directory ls
File.txt
File.txt
File1.txt
如何使用 mv 将所有文件移动到新目录(/new)
../new ls
File.txt
File.txt
File1.txt
更新:文件正在由源系统通过 FTP 传输到 UNIX 目录,需要使用 shell 脚本进行处理。完成后,我需要将同一文件的多个实例(如果有)移动到存档目录。
通过“处理”,我所做的就是将其复制到一个目录。并在另一个使用 MV 的存档中。使用 cp n mv 仅处理文件的一个实例。
答案1
我有一个包含多个同名文件的目录。
嗯,你不应该。你怎么能甚至cat
他们的内容呢? (也就是说,每次只获取同名的第一个文件)。
如何使用 mv ../new ls File.txt File.txt File1.txt 将所有文件移动到新目录 (/new)
我决定尝试给它们起不同的名字:
mv File.txt ../new/File.txt.1
mv File.txt ../new/File.txt.2
看看你是否会以这种方式得到不同的文件。
更新:文件正在由源系统通过 FTP 传输到 UNIX 目录,需要使用 shell 脚本进行处理。
这极不可能导致同一目录中有多个同名文件的情况。所以我想不要担心这个案子。
答案2
你能不能使用通配符来移动它,例如
mv file.tx* /new/
这会将名称以 开头的所有文件移动file.tx
到您的目录中/new
。它将留下任何不匹配的文件,因此file1.txt
将保留在目录中。如果您想移动名称为 file.txt 和 file1.txt 的任何文件,您可以将通配符 * 移动到 file 之后,例如,file*
这将移动该目录中名称以 file 开头的任何文件。