[英]BASH script for sorting files recursively by base filename into folders of the same name
我具有以下文件结构:
\\ HI
\\ LO
\\ MED
* base_filename * _med.mp4
\\剧照
* base_filename * _med.jpg
\\ CAPTIONS
* base_filename * .adb.xml
\\ TRANSCRIPTS
* base_filename * .TXT
为了将它们吸收到MarkLogic环境中,我需要将它们重新排列为以下结构,其中资产是基本文件名。
\\ ASSET
我想要一个bash脚本为我解决这些问题。 建议?
find . -type f -print |
while read -r pathname; do
filename=${pathname##*/}
case "$filename" in
*_hi* | *_med* | *_lo*)
# strip off last underscore and following chars
new_dirname=${filename%_*}
;;
*)
# strip off first dot and following chars
new_dirname=${filename%%.*}
;;
esac
mkdir -p "../$new_dirname"
echo mv "$pathname" "../$new_dirname/$filename"
done
未经测试。 当您满意mv
命令看起来正确时,请删除echo
。
我将目标目录移到了CWD的父目录,因为我不确定find
是否会选择新创建的目录。 有人可以解决这一点吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.