efr*_*rem 5 command-line scripts mv
我在一个文件夹中有多个文件:
ABA.xy
BEB.xy
ACA.xy
Run Code Online (Sandbox Code Playgroud)
另一个文件夹中具有不同扩展名的相同文件
ABA.rr
BEB.rr
ACA.rr
Run Code Online (Sandbox Code Playgroud)
然后我每个文件名都有一个文件夹
ABA
BEB
ACA
Run Code Online (Sandbox Code Playgroud)
我想做以下事情。如果有扩展名的文件.xy,并.rr具有相同的名称为文件夹,移动到该文件夹。例如
ABA.xy and ABA.rr in ABA
Run Code Online (Sandbox Code Playgroud)
我熟悉mv但我认为在这里我必须编写一个小脚本才能做到这一点。
假设您的文件存储在sourcedir 中,您的目标文件夹dest如下树所示:
$ tree source
source
??? dir1
? ??? ABA.xy
? ??? ACA.xy
? ??? BEB.xy
??? dir2
??? ABA.rr
??? ACA.rr
??? BEB.rr
2 directories, 6 files
$ tree dest
dest
??? ABA
??? ACA
??? BEB
3 directories, 0 files
Run Code Online (Sandbox Code Playgroud)
命令将是:
$ tree source
source
??? dir1
? ??? ABA.xy
? ??? ACA.xy
? ??? BEB.xy
??? dir2
??? ABA.rr
??? ACA.rr
??? BEB.rr
2 directories, 6 files
$ tree dest
dest
??? ABA
??? ACA
??? BEB
3 directories, 0 files
Run Code Online (Sandbox Code Playgroud)
source是源目录或指定的父目录。noext="${0%.*}"去除文件扩展名并将结果保存到noext变量中。"${noext##*/}"从noext变量中删除文件路径部分并选取唯一的文件名。
dest directory 是目标父目录。
因此mv '{}' "dest/${noext##*/}/"'将当前文件移动到dest/$noext目录。
noext上面命令中的内容只是文件名,没有扩展名和路径,指定与当前文件名同名的目标目录。
请注意,此命令用于echo测试和试运行。如果您确定自己在做什么,请删除echo前面的mv命令以执行实际移动。
| 归档时间: |
|
| 查看次数: |
2748 次 |
| 最近记录: |