Clojure整理文件

  最近要回家了,需要把资料整理整理,在电脑上有一大堆书籍,分类存放在各自所属的目录下,要整理起来还挺麻烦的,偷懒是人类进步的伟大特质之一,用Clojure完成这个任务吧。

  写完以后效果不错,完成这一工作只用了不到20行代码,由于我是新手,应该还可以写得更简练的,纯当练手了。代码如下:

(ns ToolsUtilities.core
  (:use [clojure.java.io]))

(def target-types ["pdf"])

(defn file-filt-pred? [file]
  (let [file-name (.getName file)]
    (some #(= (.substring file-name (+ 1 (.lastIndexOf file-name "."))) %) target-types)))

(defn move-subfile-to-target [source target file-filt-pred]
  (.mkdir (file target))
  (let [files (filter file-filt-pred (filter #(.isFile %)(file-seq (file source))))]
    (doseq [per-file files] (copy per-file (file (str target "/" (.getName per-file)))))))

(defn collect-book [source-path target-path]
  (let [dir-filter (partial filter #(.isDirectory %))
        dirs (-> source-path file .listFiles dir-filter)]
    (doseq [dir dirs]
      (move-subfile-to-target dir (str target-path "/" (.getName dir)) file-filt-pred?))))

  

时间: 2024-10-05 07:52:28

Clojure整理文件的相关文章

Python3整理文件

晚上打算把播放器下载下来的音乐拷贝到mp3里边,但是它是如下形式存放的,相当头痛-- 作为程序员,想到使用python来遍历这个目录,并将有大于限制的音乐文件拷贝到指定目录,相关实现代码如下: # author:liaoyu # date :2014-05-30 import os import re import shutil #音乐目录 dirPath = r'C:\CloudMusic' #音乐存放目录 distPath = r'D:\pyzone\红心音乐' if os.path.isd

使用gridlayout布局后,因某些原因又删除,并整理文件夹结构时,Unable to resolve target 'android-7'

出现的问题 [2013-01-11 10:52:39 - gridlayout_v7] Unable to resolve target 'android-7' 事由:在一次做九宫格时.误使用了gridlayout布局.因此eclipse为我自己主动下载了??gridlayout_v7_2 文件,并放到工作空间文件夹. 由于不再须要,也为了文件夹结构的清晰性,须要将其删除.但在关闭(Close Project)这个文件时,eclipse自己主动编译项目出错,提示?Unable to resolv

关于SharpZipLib压缩分散的文件及整理文件夹的方法

今天为了解决压缩分散的文件时,发现想通过压缩对象直接进行文件夹整理很麻烦,因为SharpZipLib没有提供压缩进某个指定文件夹的功能,在反复分析了SharpZipLib提供的各个接口方法后,终于找到了解决方法,现在贴出来,给需要的同学参考参考. 下面是封装的压缩类: using ICSharpCode.SharpZipLib.Zip; using System; using System.IO; namespace test { public class Zip { public static

Python定期删除文件、整理文件夹

1.根据传入的参数,文件所在目录,匹配文件的正则表达式,过期天数进行删除,这些可写在配置文件del_file.conf. del_file3.py #!/usr/bin/env python # encoding: GBK import os import re import sys import time import datetime import logging #reload(sys) #sys.setdefaultencoding('utf-8') logging.basicConfi

Node填坑教程——整理文件

如果你能把所有代码写进一个文件,并且能很好的管理.协调.多人开发.那么可以跳过这期(请务必带我飞). 我们接着完善上期的代码,给代码分家. node并没有启动入口,更没有固定的项目结构,文件配置.这些全部要靠自己动手,靠约定,正所谓约定由于配置.因为作者书读的少,只会MVC结构,姑且按照MVC结构来分. 建立如下目录. /bin/ : 项目的启动文件,也可以放其他乱七八糟的脚本.如果你有多种环境或者多个入口,这样分就很有必要的 /configure/ : 配置文件,上图中根据生产环境和开发环境配

talend工具整理文件并出力文件到Excel当中

问题描述: 每天都会生成一定的txt文件,txt文件当中含有复数个个人的信息,把每个个人信息都抽出来之后放到Excel文件的一览里面. 解决思路: 1.txt文件里面的信息有多件,每一件生成一个临时的文件. 2.读取临时的文件之后放到Excel的一览里面. 3.考虑到二次执行的时候,要把临时的文件和前一次的数据给删除. talend的具体的流程如下图: 解释说明: ①为了第二次可以执行,所以在此处先删除临时文件夹里面的临时文件 代码如下: // 当「コンポーネント」で.下記コードを書きます //

整理文件,翻出了以前作的ps稿 (^o^)c旦``

稍稍会那么一点PS,小意思   

文件上传姿势整理(附实战)

--人的理想志向往往和他的能力成正比. 在这里整理一些自己最近学习的文件上传的知识,方便自己回忆和深刻记忆(不全,只是将自己不知道的原理以及技巧分享出来). 文件上传漏洞的几种情况(在ichunqiu的博客园扒的 - -.): MIME类型绕过漏洞(就是content-type:) 文件内容检测绕过 空字节截断(%00,0x00) 解析导致的文件上传漏洞: IIS6.0/IIS7.0/IIS7.5(后面细说) Apache站上的解析缺陷绕过上传 htaccess文件上传解析漏洞 还有就是各种cm

小工具之文件整合

在整理文件的时候,想要将同目录下的文件内容整合到同一个文件中,通常需要一个一个文件打开,复制,再在目的文件黏贴.如果文件量较小,不觉得繁琐,但是在文件量太大的情况下,一个一个的复制黏贴很明显效率太低,浪费大量时间做一下重复性很强的工作.这时候就需要一款文件整合工具来简便.批量的执行复制黏贴的工作.下面介绍的这款就是处理这种复制黏贴工作. 工具源码 # -*- coding: utf-8 -*- """ Module implementing App. ""