two*_*ash 2 directory bash shell scripting file
我有以下文件结构:
\ HI
\ LO
\ MED
*base_filename*_med.mp4
\剧照
*base_filename*_med.jpg
\ CAPTIONS
*base_filename*.adb.xml
\ TRANSCRIPTS
*base_filename*.TXT
为了将它们摄取到MarkLogic环境中,我需要将这些重新排列到以下结构中,其中asset是基本文件名.
\ 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
Run Code Online (Sandbox Code Playgroud)
未经测试.echo当你满意的mv命令看起来正确时删除.
我将目标目录移动到CWD的父目录,因为我不确定是否find会选择新创建的目录.有人可以解决这一点吗?