[英]issue with path or with my files with bash scripting
挫折。
我昨天發布了這個問題,我最終刪除了它,因為我認為當晚可以給我一些喘息的機會,並幫助我找到答案。
今天早上我嘗試了新事物,但是不,我被卡住了。
我有以下在/home/appseuro
上運行的腳本
有關信息: datenow=$(date +%Y%M%d)
for rep in $(ls -l /home/appseuro/ | grep "^d" | awk '{print $10}' | sed 's/\///g'); do
for file in $(ls /home/appseuro/"$rep"/"$datenow"/*.tsv);
do /home/appseuro/trans.sh < /home/appseuro/"$rep"/"$datenow"/"$file" > /home/appseuro/"$rep"/"$datenow"/"${file%.*}v1.${file##*.}"
; done ;done
此循環的目標應為以下內容。 對於/home/appseuro/
中的每個文件夾,以及這些文件夾中以及$datenow
文件夾中的每個.tsv文件,我將調用腳本trans.sh
,在其中將.tsv文件用作輸入並將它們放在不同文件的輸出。
運行它后,出現以下錯誤:
/home/appseuro/mens_actu/20140402//home/appseuro/mens_actu/20140402/ek_manu_j.csv: No such file or directory
如果我在/home/appseuro/mens_actu/20140402
,則以下版本
for file in *.tsv;
do /home/appseuro/trans.sh < "$file" > "${file%.*}v1.${file##*.}"
; done
上面的腳本正在執行第一個腳本的操作,但是沒有檢查文件夾,一切正常!
在處理了其他問題2個星期后,我想從這個問題上脫穎而出。
如果有人可以解釋原因。
不便之處,敬請原諒
最好。
這是您真正想要做的嗎?
datenow=$(date +%Y%m%d)
for file in /home/appseuro/*/"${datenow}"/*.tsv; do
[ -e "${file}" ] || continue
dir=${file%/*}
filename=${file##*/}
/home/appseuro/trans.sh < "${file}" > "${dir}/${filename%.*}v1.${filename##*.}"
done
請注意,我將date
格式從%Y%M%d
更改為%Y%m%d
因為它看起來像是拼寫錯誤( %M
是分鍾)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.