unix命令用于更改目录名称

时间:2012-11-12 09:25:38

标签: unix

嗨,这是一个简单的问题,但目前我的解决方案已经解决了。

我可以找到我要更改名称的文件夹名称,我知道更改文件夹名称的命令是mv

所以从当前目录开始,如果我去

ls ~/relevant.directory.containing.directory.name.i.want.to.change

我得到目录的名称叫做lorem-ipsum-v1-3

但目录名称将来可能会更改,但它是目录中唯一的目录:  〜/ relevant.directory.containing.directory.name.i.want.to.change

如何以编程方式将其更改为特定名称,例如correct-files

我可以通过执行类似

的操作来正常完成
 mv lorem-ipsum-v1-3 correct-files

但我想开始自动化,这样我就不需要继续复制和粘贴目录名....

任何帮助将不胜感激......

3 个答案:

答案 0 :(得分:3)

类似的东西:

find  . -depth -maxdepth 1 -type d | head -n 1 | xargs -I '{}' mv '{}' correct-files
只要只移动一个目录,

就可以正常工作。

答案 1 :(得分:2)

如果您完全确定relevant.directory.containing.directory.name.i.want.to.change只包含您要重命名的目录,那么您只需使用通配符:

mv ~/relevant.directory.containing.directory.name.i.want.to.change/*/ ~/relevant.directory.containing.directory.name.i.want.to.change/correct-files

使用bash大括号扩展还可以进一步简化为:

mv ~/relevant.directory.containing.directory.name.i.want.to.change/{*/,correct-files}

答案 2 :(得分:1)

cd ~/relevant.directory.containing.directory.name.i.want.to.change 
find . -type d -print | while read a ;
do
  mv $a correct-files ;
done

注意事项:

  • 无错误处理
  • 可能有一种方法可以将参数反转为mv,这样你就可以使用xargs而不是while循环,但这不是标准的(据我所知)
  • 未参数化
  • 如果有任何子目录,它将无法正常工作。 find命令的深度参数(再次,AFAIK)不是标准的。它们确实存在于GNU版本中,但似乎在Solaris上缺失
  • 可能是其他人......