Unix查找将文件名传递给Exec并在输出重定向中
我想对图像目录进行base64编码,删除base64输出中的换行符。然后将其保存为Unix查找将文件名传递给Exec并在输出重定向中,unix,find,pipe,io-redirection,Unix,Find,Pipe,Io Redirection,我想对图像目录进行base64编码,删除base64输出中的换行符。然后将其保存为.base64.txt 我可以使用以下for循环执行此操作: 用于$格式的文件(查找路径/to/images-name“*.png”);做 base64“$file”| tr-d“\n”>“$file”.base64.txt 完成 如何使用查找使用xargs或-exec执行此操作?这是一个非常接近的副本,但不包括您正在处理的案例 要获取文件名,可以运行-exec sh-c循环 find path/to/image
.base64.txt
我可以使用以下for
循环执行此操作:
用于$格式的文件(查找路径/to/images-name“*.png”);做
base64“$file”| tr-d“\n”>“$file”.base64.txt
完成
如何使用
查找使用xargs
或-exec
执行此操作?这是一个非常接近的副本,但不包括您正在处理的案例
要获取文件名,可以运行-exec sh-c
循环
find path/to/images -name "*.png" -exec sh -c '
for file; do
base64 "$file" | tr -d "\n" > "${file}.base64.txt"
done' _ {} +
使用find-exec
和+
将find
中的所有搜索结果一次性放入sh-c'.
中的小脚本中。\uuu
意味着调用显式shell来运行'..'
中定义的脚本,并将文件名列表收集为参数
另一个使用xargs
的替代版本与上面的循环一样昂贵,如下所示。但此版本使用num
字符-print0
分隔文件名,并且xargs
在同一个字符上读取文件名,这两个字符都是GNU特定的标志
find path/to/images -name "*.png" -print0 |
xargs -0 -I {} sh -c 'base64 {} | tr -d "\n" > {}.base64.txt'