有一个文件夹,里面有很多文件:
112.mkv
123.md5
123.mkv
221.mkv
467.mkv
aa1.mkv
abc.md5
abc.mkv
bbc.mkv
dde.md5
dde.mkv
ggh.mkv
....
xxy.md5
xxy.mkv
xxz.mkv
如何将.md5
文件和相关.mkv
文件移动到新目录(使用 Bash)?
123.md5
123.mkv
abc.md5
abc.mkv
dde.md5
dde.mkv
xxy.md5
xxy.mkv
我想将这些文件移动到一个新目录中,例如mkvandmd5/
。
或者,Midnight Commander 中是否有任何提示来标记这些文件.md5
和相关.mkv
文件?
及其
bash
参数扩展:输出:
echo
如果输出看起来没问题则删除。如果您的意思是想要移动
*.mkv
具有相应.md5
文件(以及该.md5
文件)的文件,那么zsh
您可以执行以下操作:.mkv
如果每个总有一个.md5
,则可以简化为:或者:
使用(如果您在 yash 中将with和with
bash
替换,则在 zsh 或 yash中也可以使用),您可以执行以下操作:shopt -s nullglob
set -o nullglob
${#files[@]}
${files[#]}
.mkv
或者如果每个都总有一个.md5
:使用这个单行代码,它利用
find
和xargs
:细节:
find . -maxdepth 1 -mindepth 1 -name '*.mkv'
:在当前目录中查找所有.mkv
文件。xargs -I{} basename {} .mkv
:从文件名中剥离.mkv
扩展名(和目录名,但这与此无关),仅保留基本名称。 :将具有此基本名称和扩展名xargs -I{} mv {}.mkv {}.md5 dest_dir/
的文件移动到目录。.mkv
.md5
dest_dir/
您可以尝试使用数组和一些参数扩展来使用完整的脚本
删除
echo
if/when 对输出满意的情况。看
解决这个问题的关键是生成一个排除唯一基本名称条目的文件列表。
下面是一个带有命令及其输出的方法——后面是解释:
解释:
将这些文件移动到目标目录是一项简单的任务。例如:
或者,您可以将输出传送到 while 命令并在生成文件时移动它们,例如: