[英]Looping through folders and renaming all files in each folder sequentially with folder name
我有一系列子文件夾,每個子文件夾上都有圖像。
結構看起來像
/stuff/
IMG_012.JPG
IMG_013.JPG
IMG_014.JPG
/morestuff/
IMG_022.JPG
IMG_023.JPG
IMG_024.JPG
我想在我的mac終端上編寫一個腳本,以遍歷每個文件夾並依次重命名圖像,包括文件夾名稱。 因此,上述結構如下所示:
/stuff/
stuff_1.JPG
stuff_2.JPG
stuff_3.JPG
/morestuff/
morestuff_1.JPG
morestuff_1.JPG
morestuff_1.JPG
我原本嘗試創建Automator工作流程並使用變量,但是很難將文件夾名稱分配為變量並使循環正常工作。
我希望終端提供一個優雅的解決方案。
有任何想法嗎?
這應該對您來說很好。 將其保存為HOME目錄中的“ RenameImages”,然后使其可執行,如下所示:
cd
chmod +x RenameImages
然后,您可以在每個目錄( -type d
)上運行它( -exec
),如下所示:
find . -type d -exec ./RenameImages {} \;
這是腳本:
#!/bin/bash
# Ignore case, i.e. process *.JPG and *.jpg
shopt -s nocaseglob
shopt -s nullglob
# Go to where the user says
echo Processing directory $1
cd "$1" || exit 1
# Get last part of directory name
here=$(pwd)
dir=${here/*\//}
i=1
for image in *.JPG
do
echo mv "$image" "${dir}${i}.jpg"
((i++))
done
目前,除了向您展示其功能之外,它什么也沒做。 如果您喜歡它的功能,只需從第三行刪除echo
一詞,然后再次運行即可。
因為您提到您嘗試使用Automator,所以我想拋出另一種方法來執行此操作。 此文件搜索和處理軟件: http : //www.softpedia.com/get/File-managers/JFileProcessor.shtml https://github.com/stant/jfileprocessor
將允許您使用名稱,大小,日期,X或所有深度的子文件夾中的glob或regex搜索文件。 您可以保存到“列表”窗口或文件。 然后,您可以運行一個groovy(思考Java)腳本來對文件列表執行任何操作。 壓縮或壓縮它們,修改列表字符串,如sed,刪除,移動,復制文件,grep或ls -l它們,等等。 在您的情況下,您可以修改現有的常規示例以執行以下操作:
int numItems = defaultComboBoxModel.getSize();
System.out.println( "defaultComboBoxModel.getSize() num of items =" + numItems + "=" );
String str = "";
for( int i = 0; i < numItems; i++ )
{
str = defaultComboBoxModel.getElementAt( i ).toString();
System.out.println( "file of index =" + i + " str =" + str + "=" );
String cmd = "mv " + str + " " + i + ".jpg"; // or whatever
def list = cmd.execute().text // this stuff just captures output and write to a log file
list.eachLine{
outFile << it;
}
outFile << System.getProperty("line.separator") + "-------------------------------------" + System.getProperty("line.separator");
}
它還可以讓您按摩列表,例如添加到列表,從列表中刪除,從另一個列表中減去一個列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.