由于 &(和号),输出停止。我需要将每行输出括在引号中吗?我认为?

由于 &(和号),输出停止。我需要将每行输出括在引号中吗?我认为?

我每天早上使用 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"

相关内容