Catenate文件之间有空行

时间:2016-02-16 04:11:47

标签: bash for-loop

我们如何将给定目录中所有文件的所有内容复制到文件中,以便每个文件的内容之间有两个空行

不用说,我是bash脚本的新手,我知道这不是一个复杂的代码!

任何帮助将不胜感激。

相关链接如下:
 * How do I compare the contents of all the files in a directory against another directory?
 * Append contents of one file into another
 * BASH: Copy all files and directories into another directory in the same parent directory

阅读评论后,我的初步尝试是:

cat * > newfile.txt  

但是这不会在每个新文件的内容之间创建两个空行。

3 个答案:

答案 0 :(得分:1)

试试这个。

awk 'FNR==1 && NR>1 { printf("\n\n") }1' * >newfile.txt

变量FNR是当前文件中的行号,NR是整体行号。

答案 1 :(得分:1)

一种方式:

(
    files=(*)
    cat "${files[0]}"
    for (( i = 1; i < "${#files[@]}" ; ++i )) ; do
        echo
        echo
        cat "${files[i]}"
    done
) > newfile.txt

答案 2 :(得分:0)

文件组织示例:

我有一个目录〜/ Pictures / Temp

如果我想将PNG从该目录移动到另一个目录,我首先要为我的文件名设置一个变量:

# This could be other file types as well
file=$(find ~/Pictures/Temp/*.png)

当然,有很多方法可以查看此结帐:

$ man find
$ man ls

然后我想设置一个目录变量(特别是如果这个目录会像日期一样

dir=$(some defining command here perhaps an awk of an ls -lt)
# Then we want to check for that directories existence and make it if
# it doesn't exist
[[ -e $dir ]] || mkdir "$dir"
# [[ -d $dir ]] will work here as well

你可以写一个for循环:

# t is time with the sleep this will be in seconds
# super useful with an every minute crontab
for ((t=1; t<59; t++));
do
    # see above
    file=$(blah blah)
    # do nothing if there is no file to move
    [[ -z $file ]] || mv "$file" "$dir/$file"
    sleep 1
done

如果Google中有任何一个似乎不清楚,请点击这里有一些有用的链接: https://www.gnu.org/software/gawk/manual/html_node/For-Statement.html http://www.gnu.org/software/gawk/manual/gawk.html

此页面上的最佳链接如下:

http://mywiki.wooledge.org/BashFAQ/031

编辑:

无论如何,我要回答的是,您可以轻松编写一个脚本,将系统中的某些文件组织60秒,然后编写一个crontab来自动为您进行组织:

crontab -e 

这是一个例子

$ crontab -l
* * * * * ~/Applications/Startup/Desktop-Cleanup.sh
# where ~/Applications/Startup/Desktop-Cleanup.sh is a custom application that I wrote