[英]Bash Script to group multiple file by file name and archiving into one zip file and then finally moving to another dirrectory
zip 多個文件的任何方式,應該只創建一個 zip 文件並移動到另一個目錄
例子:
/tmp/movies/
GOT1.mp4
GOT2.mp4
BREAKINGBD1.mp4
所以我希望所有名稱為GOT
的文件都應該壓縮在一個 zip 文件中並移動到另一個目錄( GameOT
)
所以最后的結果:
/tmp/movies/
BREAKINGBD1.mp4
/tmp/movies/GameOT
GOT.zip
現在使用下面的代碼但是因為這個腳本在另一個目錄中創建了多個 zip 文件並且也沒有移動文件(所有文件仍然存在於同一目錄中)
LIST_OF_FILES=*GOT*
TARGET_DIRECTORY=/tmp
for filename in $LIST_OF_FILES; do
zip_filename=$filename.zip
zip $zip_filename $filename
mv $zip_filename $TARGET_DIRECTORY
done
該腳本將在創建自己的測試文件進行演示時演示全部功能。
#!/bin/sh
dummyInput="dummyInputFiles.list"
dirSRC="${PWD}/movies"
if [ ! -d "${dirSRC}" ]
then
mkdir "${dirSRC}"
fi
cat>"${dummyInput}" <<EnDoFiNpUt
GOT1.mp4
GOT2.mp4
BREAKINGBD1.mp4
EnDoFiNpUt
while read line
do
echo "${line}" >"${dirSRC}/${line}"
sleep 1
done <"${dummyInput}"
( cd "${dirSRC}" ; ls -ltr `cat "${dummyInput}" ` )
### Locate all files matching pattern
for pattern in GOT
do
TGT=`echo "${pattern}" | sed 's+^GO+GameO+' `
dirZIP="${dirSRC}/${TGT}"
if [ ! -d "${dirZIP}" ]
then
mkdir "${dirZIP}"
fi
if [ ! -d "${dirZIP}" ]
then
echo "\t Unable to proceed because directory "${dirZIP}" does not exist.\n" ; exit 1
fi
zip --quiet --display-globaldots --dot-size 1m --junk-paths --latest-time --test "${dirZIP}/${pattern}.zip" "${dirSRC}/GOT"*
done
unzip -l -v "${dirZIP}/${pattern}.zip"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.