挫折。
我昨天发布了这个问题,我最终删除了它,因为我认为晚上会给我一些喘息的机会并帮我找到答案。
今天早上我尝试了新的东西,但是不,我被卡住了。
我在/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/
中的每个文件夹以及这些文件夹中的每个.tsv文件以及文件夹$datenow
内的每个文件夹,我正在调用我正在使用.tsv文件的脚本trans.sh
输入并将它们放在不同文件的输出上。
运行后我有以下错误:
/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周后,我想在这个问题上拔出头发。
如果有人能解释原因。
对于任何不便表示抱歉
最佳。
答案 0 :(得分:0)
这是你真正要做的吗?
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
是分钟)。