经过一天清理十几个不同文件中的500M记录后,我需要一些批量自动化,请:
有100个左右的名为HIST的文件?????? (HIST后最多6个字符)
我需要对每个操作进行四次操作:
iconv -f US-ASCII -t UTF-8 %filename% - c -o %tempname1%
iconv -f UTF-8 -t UTF-8 %tempname1% -c -o %tempname2%
cat %tempname2% | tr -d '\r' > %morepermanentname%
sudo python blah.py %morepermanentname%
任何人都可以建议如何创建临时名称/从一行到另一行传递它们并为dir中的所有HIST *文件循环这个东西?
这看起来不错吗?
for f in HIST*
do
$temp1 = "temp1"
$temp2 = "temp2"
$semi = $f"perm"
iconv -f US-ASCII -t UTF-8 "$f" -c -o "$temp1"
iconv -f UTF-8 -t UTF-8 "$temp1" -c -o "$temp2"
cat "$temp2" | tr -d '\r' > "$semi"
sudo python blah.py "$semi"
done
请注意,带-c
的iconf utf-8到utf-8看起来很奇怪,但已经抓到了一些东西。
答案 0 :(得分:1)
您正在寻找for
。
for f in HIST*
do
./process "$f"
done
答案 1 :(得分:1)
编辑脚本:
for f in HIST*
do
iconv -f US-ASCII -t UTF-8 "$f" -c -o "$f".tmp
iconv -f UTF-8 -t UTF-8 "$f".tmp -c -o "$f".tmp2
tr -d '\r' < "$f".tmp2 > "$f"perm
sudo python blah.py "$f"perm
rm "$f".tmp "$f".tmp2
done
如果您不希望保留原始副本而不是使用"$f"
,则显然可以在tr
中使用相同的"$f"perm
。
=
之间不应有空格。 $
印章。
答案 2 :(得分:1)
鉴于iconv
的记录行为(当没有给出输入文件时从标准输入读取;写入标准输出),根本不需要显式的中间文件。
for file in HIST*
do
semi="${file}perm"
iconv -f US-ASCII -t UTF-8 -c "$file" |
iconv -f UTF-8 -t UTF-8 -c |
tr -d '\r' > "$semi"
sudo python blah.py "$semi"
done
通过在使用时引用文件名变量,如果任何文件名包含空格,它也可以避免问题 - 而不是看起来很可能会出现问题。
我很好奇 - 为什么你需要blah.py
脚本的root权限?它是将半永久文件复制到特权位置还是什么?您是否需要在sudo
命令后删除半永久文件?