[英]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.