我每天早上使用 pushbullet 将最近修改的文件列表发送到我的手机。我使用 Find 和 printf 清理列表并将其推送到 pushbulet 脚本。
/home/user/scripts/pushbullet/pushbullet.sh "Synced: `find /mnt/1tb/tv/ /mnt/1tb/movies/ -type f -ctime -1 | wc -l`" "`find /mnt/1tb/tv/ /mnt/1tb/movies/ -type f -ctime -1 -printf "%f\n"`"
首先,它获取已修改文件的数量,然后获取不包含目录的已修改文件列表。
问题是,如果文件名是File&Cheese.mkv
发送给我的消息,则在“文件”处停止,并且在“与”符号后什么都没有发送。这是 pushbullet 脚本的问题。
我认为最简单的方法是确保输出列表的每一行都用引号引起来,但我不知道如何做到这一点。
有任何想法吗?
答案1
find
您可以通过将输出传输到while
并使用来获取引号中的每个文件名echo
find ... | while read line ; do echo \""$line"\" ; done
find ...
用你的整个命令替换find
。
转义的引号\"
将在每一行周围打印文字"
,但也会引用变量以防止扩展。
输出将如下所示
"my file"
"another file"
"File&Cheese.mkv"