这是问题。我有一个Ubuntu 14.04服务器上有超过100,000K文件的目录。我需要在后台处理这些文件,因此我编写了一个shell脚本,将这些文件转换为较大的文件,然后删除该文件。然而,这个问题的起因在于它也是处理脚本和输出文件的猫。有任何想法吗?将文件名与字符串中的文件名进行比较的Shell脚本问题
#!/bin/sh
c=0
#loop through 1000 results at 1 time
d=1000
while [ $c -lt $d ]
do
filename=$(`ls | head -n 1`)
#echo $filename
if [ $filename == "process.sh" ]
then
break
fi
if [ $filename == "file.txt" ]
then
break
fi
cat `ls | head -n 1` >> file.txt
rm `ls | head -n 1`
#echo $c
c=`expr $c + 1`
done
您处理完成后,您可以删除有问题的行:'sed的-i.bak“/模式匹配/ d”/file.txt' –
的问题是,正在处理的文件号码不固定。总是有批量添加的文件。我的意思是有时候有10万甚至更少。我想我可以首先得到一些文件,从循环中得到-1,因为其他文件都有数字名称。不知道,我需要刷一下我对shell脚本的了解。 –
除非我错过了某些东西,'ls | head -n 1'将始终返回第一个文件。我没有看到这个脚本通过文件进行。也不应该把'filename = $('ls | head -n 1')这行''filename = $(ls | head -n 1)'?当做简单的数学运算时,我更喜欢格式'c = $((c + 1))'。 – Deathgrip