我制作了這個腳本:
- 將所有存盤庫從 Bitbucket 克隆到檔案夾 "temporary projects" 。要克隆存盤庫,腳本使用我的“repolinks.csv”,這通常是名稱所說的,指向存盤庫的鏈接保存為文本檔案:)
- 克隆每個 repo 后,腳本在“temporaryprojects”中的每個檔案夾(repo)中搜索所有 .ttf 檔案,并將結果(每個 ttf 檔案的路徑)保存為 TTF-Project-Paths
- OTFINFO 部分正在讀取 .ttf 檔案的路徑(TTF-Projects-Paths),并為我提供有關這些 ttf 檔案(家族、子家族、作者等)的指定資訊,并將其保存為“TTF-Projects-INFO”
#!/bin/bash
cd /Users/krzysztofpaszta/temporaryprojects
for repo in $(cat /users/krzysztofpaszta/repolinks.csv); do
git clone "$repo"
echo Repo cloned to /users/krzysztofpaszta/temporaryprojects
done
#tablica z nazwa repo (repo_links na przyk?ad) repo p?tla
echo Pobieranie ?cie?ek wszystkich plików TTF na urz?dzeniu z projektow Boombit
find "/users/krzysztofpaszta/temporaryprojects/" -name "*.ttf" > /Users/krzysztofpaszta/TTF-Projects-PATHS.csv
echo Sciezki plikow pobrane
while read in; do
otfinfo --info filename="${fullfile##*/}" >> /users/krzysztofpaszta/TTF-Projects-INFO.csv "$in"
done < /users/krzysztofpaszta/TTF-Projects-PATHS.csv
echo dane plikow pobrane
rm -vrf /Users/krzysztofpaszta/temporaryprojects/*
echo Repo deleted
一切都很好,但現在我正在努力如何修改這個腳本。如您所見,現在所有的 repos 都已下載,然后所有關于 repos 的資訊都保存在一個名為 TTF-Project-INFO 的檔案中。我需要它做的是單獨搜索每個 repo 并將結果保存為 $repo.csv(一個 repo 的名稱為 csv)并不斷將它保存到“repolinks.csv”中的最后一個 repo 我修改了這樣的腳本:
#!/bin/bash
cd /Users/krzysztofpaszta/temporaryprojects
for repo in $(cat /users/krzysztofpaszta/repolinks.csv); do
git clone "$repo"
find "/users/krzysztofpaszta/temporaryprojects/$repo" -name "*.ttf" > /Users/krzysztofpaszta/$repo.csv
echo Repo cloned to /users/krzysztofpaszta/temporaryprojects
while read in; do
otfinfo --info filename="${fullfile##*/}" >> /users/krzysztofpaszta/TTF-Projects-INFO.csv "$in"
done < /users/krzysztofpaszta/TTF-Projects-PATHS.csv
但不幸的是,它實際上在做同樣的事情。將每個 repo 保存到“臨時專案” ,然后搜索每個 .ttf 檔案路徑,然后搜索 info 并將這些資訊保存在一個檔案中。我認為這只是 bash 中非常簡單的回圈,但我不知道如何正確執行。有人可以給我一些提示嗎?我試圖修改腳本,但到目前為止沒有運氣。
CSV 樣本:TTF-Projects-Paths.csv:
/users/krzysztofpaszta/temporaryprojects/project1/Fonts/SwallowFallsMixAllCyryl.ttf
/users/krzysztofpaszta/temporaryprojects/project2/Fonts/KOMIKAZE.ttf
/users/krzysztofpaszta/temporaryprojects/project2/Graphics/Fonts/Arial Unicode.ttf
/users/krzysztofpaszta/temporaryprojects/project3/fonts/SwallowFallsMixAll.ttf
TTF-專案-INFO.csv:
/users/krzysztofpaszta/temporaryprojects/project1/Fonts/LiberationSans.ttf:Family: Liberation Sans
/users/krzysztofpaszta/temporaryprojects/project1/Fonts/LiberationSans.ttf:Subfamily: Regular
/users/krzysztofpaszta/temporaryprojects/project1/Fonts/LiberationSans.ttf:Full name: Liberation Sans
/users/krzysztofpaszta/temporaryprojects/project1/Fonts/LiberationSans.ttf:PostScript name: LiberationSans
etc... project2, project3 with the same info about fonts.
repolinks.csv:
https://bitbucket.org/organisation/project1-settings https://bitbucket.org/organisation/crave-man https://bitbucket.org/organisation/adverts https://bitbucket.org/organisation/pipeline https://bitbucket.org/organisation/data https://bitbucket.org/organisation/async https://bitbucket.org/organisation/audio
etc..
uj5u.com熱心網友回復:
如果要$repo.csv對所有 repos 使用而不是相同的檔案,請更改附加重定向中的輸出檔案:
# old
>> /users/krzysztofpaszta/TTF-Projects-INFO.csv
# new
>> /users/krzysztofpaszta/"$repo".csv
目錄的名稱不是整個 URL,只是最后一部分,您可以使用引數擴展在 bash 中提取:
dir=${repo##*/} # Remove everything up to the last slash.
適當的縮進有助于理解流程:
#!/bin/bash
cd /Users/krzysztofpaszta/temporaryprojects
for repo in $(cat /users/krzysztofpaszta/repolinks.csv); do
git clone "$repo"
dir=${repo##*/}
echo Repo cloned to /users/krzysztofpaszta/temporaryprojects
find /users/krzysztofpaszta/temporaryprojects/"$dir" -name "*.ttf" > /users/krzysztofpaszta/TTF-list-"$dir".csv
while read in ; do
otfinfo --info filename="${fullfile##*/}" "$in" >> /users/krzysztofpaszta/"$dir".csv
done < /users/krzysztofpaszta/TTF-list-"$dir".csv
done
我不確定是什么$fullfile,所以我把它留在原樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/482202.html
