在目录名称前添加目录名称

约瑟夫

我大约有100个目录,例如:

  • 步行,
  • 写作,
  • 跳舞,
  • 游泳。

这些目录中的每个目录都包含一组文件。

l想在目录的文件名中添加目录的前缀名称。

例如:

writing :
0ZPQl5QUvo0_000202_000212.mp4  
AFV8x8ezN8g_000016_000026.mp4  
-HutuMqTAPw_000275_000285.mp4 
qtvsw6h3yQo_000228_000238.mp4  
Ub0rc6U6nfI_000100_000110.mp4

变成:

writing :
writing_0ZPQl5QUvo0_000202_000212.mp4  
writing_AFV8x8ezN8g_000016_000026.mp4  
writing_-HutuMqTAPw_000275_000285.mp4 
writing_qtvsw6h3yQo_000228_000238.mp4  
writing_Ub0rc6U6nfI_000100_000110.mp4

我怎样才能做到这一点?

钢铁司机

这是您脚本的稍有改进的版本-主要区别是

  • 使用Shell Glob*代替$(ls)-参见Bash Pitfall#1

  • 引用任何变量扩展名(允许文件名带有空格或其他有趣的字符-参见Bash Pitfall#2

  • 标记mv使用--GNU扩展名的选项的结尾-这使它也可以处理以连字符开头的文件名

所以

for d in *; do 
  [[ -d "$d" ]] && cd "$d" || continue
  for f in *.mp4; do 
    echo mv -v -- "${f}" "${d}_${f}"
  done
  cd -
done

或者,更可移植的是,您可以循环./*.mp4以防止出现连字符-但随后您必须在mv

for d in *; do 
  [ -d "$d" ] && cd "$d" || continue
  for f in ./*.mp4; do 
    echo mv -v "${f}" "${d}_${f#./}"
  done
  cd -
done

无论哪种情况,一旦确定它可以按预期工作,就将其移除echo-v如果需要,请移除)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取目录名称

来自分类Dev

Jekyll -d在目录名称前添加空间

来自分类Dev

父目录名称与新目录名称结合

来自分类Dev

如何获得目录名称

来自分类Dev

找不到目录名称

来自分类Dev

在目录名称中使用“&”

来自分类Dev

排除目录名称-ruby

来自分类Dev

模块名称和目录名称冲突?

来自分类Dev

for循环在目录名前添加目录名

来自分类Dev

如何使用Linux删除目录名称前的空格?

来自分类Dev

将时间戳添加到文件/目录名称

来自分类Dev

Bash:将目录名称添加到数组中

来自分类Dev

通过.htaccess从URL隐藏目录名称

来自分类Dev

检查PWD是否包含目录名称

来自分类Dev

TFSBuild / Release Manager:目录名称无效

来自分类Dev

从URL删除目录名称Wordpress

来自分类Dev

指定VS扩展安装目录名称

来自分类Dev

在bash中增加目录名称

来自分类Dev

htaccess重写并传递顶级目录名称

来自分类Dev

使用Powershell对目录名称进行排序

来自分类Dev

从批次中的数组获取目录名称

来自分类Dev

通过PowerShell获取Azure目录名称

来自分类Dev

solr复制目录名称未使用

来自分类Dev

只需输入目录名称即可cd?

来自分类Dev

列出符号链接的目录名称

来自分类Dev

从URL中删除目录名称Wordpress

来自分类Dev

从URL删除MVC目录名称

来自分类Dev

使用PHP获取当前目录名称?

来自分类Dev

Rewriterule别名与目录名称匹配吗?