【问题标题】:Create files on fly based on the Day in the contents根据内容中的日期动态创建文件
【发布时间】:2012-06-16 01:30:21
【问题描述】:

我在文件中有一些数据,其中一行包含 Day。根据一天,我想将数据复制到特定目录中。我如何在 PHP 或 Shell 脚本中做到这一点?

file1.txt:

101 RJ 打印机 周一

file2.txt:

101 RJ 转变 周三

我想将第一个数据复制到一个目录“星期一”和另一个目录“星期三”。 PHP 或 Shell 脚本中的任何建议?

【问题讨论】:

    标签: php shell


    【解决方案1】:

    这里的重点是您如何检测“这一天”。 假设“day”行在字符串末尾包含“day”:

    for i in file*.txt
    do
      day=$(cat $i| grep day$ | head -1)
      [ -z "$day" ] && day=UNKNOWN
      mkdir -p "$day"
      cp "$1" "$day"
    done
    

    情况:

    • 当文件中有两个或更多“天”时,将使用第一个
    • 当文件中没有“天”时,文件将被复制到UNKNOWN目录

    【讨论】:

    • 假设Michael Faraday 不会出现在这些文件中:P
    • 这可以按预期工作。但是,有几天我有“2 x Monday”或“4 x Tuesday”之类的前缀。在这种情况下,该程序正在创建目录,例如 2 x Monday 或 4 x Tuesday。我不想创建任何新目录。我已经创建了几天的所有目录,并且只想复制相应目录中的文件。我如何实现它?
    【解决方案2】:

    Shell(如果总是第 4 行):

     for i in file*.txt; do cp $i "`sed -n 4p $i`/$i";done;
    

    【讨论】:

    • 谢谢.. 如果一天不总是在第 4 行怎么办?
    • 那么您可能需要扫描整个批次...构建一个天数数组,如果任何一行匹配任何一天,则逐行读取,然后移动。一直都是英文的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2019-06-24
    • 2017-09-30
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多