一起学shell(一):合并文件夹下所有文件

几个月前,一位童鞋希望我能写个脚本,合并指定文件夹下面所有的文件,如果文件夹下有目录,则递归找到所有文件,合并为一个文件。这相当于遍历一个目录,当时第一反应就是Python 的os.walk,很快一个14 行的脚本就出来了,我很骄傲地将“如此短”的 代码交给了童鞋:

import os
import sys
import shutil

rootdir = sys.argv[1]
newfile = sys.argv[2]

f = open(newfile, "wb");
for root, subFolders, files in os.walk(rootdir):
    for filename in files:
            filePath = os.path.join(root, filename)
            print filePath
            shutil.copyfileobj(open(filePath,'rb'), f)                   
f.close()


后来稍微看看了shell,发现自己根本是弱爆了,shell 完全能够一行完成的任务:

find . -type f -exec cat {} \;>all_files.txt


find . 递归从本文件夹开始查找文件

-type f 指定文件类型为普通文件,还可以选用的项有:d 目录、l 链接符号、c 字符设备、b 块设备、s 套接字等

-amin/-mmin/-cmin 可以指定文件的访问时间/修改时间/改变时间。e.g. find . -type f -atime +7 -print 打印出访问时间超过七天的所有文件

-perm 根据文件权限查找文件

-user 更具文件所有者查找文件

-delete 将删除查找到的文件

-exec 对查找到的文件执行命令,格式为: -exec ./commands.sh {} \;



你可能感兴趣的:(linux)