【问题标题】:Bash make directory based on filename and add .itmspBash 根据文件名创建目录并添加 .itmsp
【发布时间】:2011-07-27 13:13:30
【问题描述】:

我需要我的脚本将具有特定扩展名和 XML 的文件打包到一个根据文件命名的目录中。另外目录需要重命名filename+.itmsp。目前脚本会根据文件名创建一个目录,但我不确定如何将 .itmsp 添加到目录名中。

#!/bin/bash
path='/Volumes/Drive/TEST'    
cd $path

for FILE in `ls | egrep "xml|mov|mpeg|mpg"`
do
  DIR=`echo $FILE | cut -d '.' -f 1`
  mkdir -p $DIR
  mv $FILE $DIR
done

【问题讨论】:

  • 澄清一下,如果你有一个名为foo.mov 的文件,你想创建一个名为foo.itmsp 的目录吗?之后你想将foo.mov 移动到foo.itmsp/ 吗?
  • 我有两个文件 1 称为 foo.xml 和 1 称为 foo.mov/mpg/mpeg 取决于视频文件。我想将这两个文件移动到一个名为 foo.itmsp 的目录中

标签: bash mkdir


【解决方案1】:

因为这是 bash:

cd /Volumes/Drive/TEST
for FILE in *.{xml,mov,mpeg,mpg}
do
  # remove the last dot and subsequent chars, then add new ext
  DIR="${FILE%.*}.itmsp"
  mkdir -p "$DIR"
  mv "$FILE" "$DIR"
done

【讨论】:

  • 这很有效,而且比 cut 选项好得多 - 谢谢。唯一的一点是它创建了一个名为 *.itmsp 的附加目录,该目录为空 - 但可以删除
  • 我认为会发生这种情况的唯一方法是,如果模式 *.{xml,mov,mpeg,mpg} 不匹配任何文件,并且您打开了 shell 选项 nullglob
【解决方案2】:

只需像“$DIR.itmsp”一样将 .itmsp 附加到 $DIR。

【讨论】:

  • 该目录确实添加了 .itmsp。但是里面没有文件,它会削减目录外文件的扩展名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多