【发布时间】:2011-04-14 09:03:43
【问题描述】:
我有一个脚本,它连接到数据库并获取所有满足查询的记录。这些记录结果是服务器上存在的文件,所以现在我有一个包含所有文件名的文本文件。
我想要一个知道的脚本:
-
output.txt文件中每个文件的大小是多少? - 该文本文件中所有文件的总大小是多少?
更新:
我想知道如何使用Perl programming language 完成我的任务,任何输入将不胜感激。
注意:我没有任何特定的语言限制,它可以是 Perl 或 Python 脚本语言,我可以在 Unix 提示符下运行。目前我正在使用 bash shell 并拥有 sh 和 py 脚本。如何做到这一点?
我的脚本:
#!/usr/bin/ksh
export ORACLE_HOME=database specific details
export PATH=$ORACLE_HOME/bin:path information
sqlplus database server information<<EOF
SET HEADING OFF
SET ECHO OFF
SET PAGESIZE 0
SET LINESIZE 1000
SPOOL output.txt
select * from my table_name;
SPOOL OFF
EOF
我知道du -h 将是我应该使用的命令,但我不确定我的脚本应该如何,我在 python 中尝试了一些东西。我对 Python 完全陌生,这是我第一次尝试。
这里是:
import os
folderpath='folder_path'
file=open('output file which has all listing of query result','r')
for line in file:
filename=line.strip()
filename=filename.replace(' ', '\ ')
fullpath=folderpath+filename
# print (fullpath)
os.system('du -h '+fullpath)
输出文本文件中的文件名例如:007_009_Bond Is Here_009_Yippie.doc
任何指导将不胜感激。
更新:
- 如何使用
Perl将output.txt文件中存在的所有文件移动到其他文件夹位置? - 执行步骤 1 后,如何删除 output.txt 文件中的所有文件?
任何建议将不胜感激。
【问题讨论】:
-
如果文件名中有空格,则必须引用文件名
os.system('du -h "%s"' % fullpath) -
投反对票通常有解释,请提供一个,以便我改进问题。
-
@RickF:我尝试过使用你建议的 du 命令,但它给了我一些数字,我该如何解释它,是 kb、mb、gb 还是 by ?另外我的操作系统版本很旧,所以我没有 du -h 选项,有没有办法可以使用命令 my ($size) = split(' ',
du "$folderpath/$_");?
标签: python perl file unix scripting