我们如何将给定目录中所有文件的所有内容复制到文件中,以便每个文件的内容之间有两个空行?
不用说,我是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
但是这不会在每个新文件的内容之间创建两个空行。
答案 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