原命令:mount -o loop oraclelinux-R6-U8-Server.iso /mnt
现需求:写入shell脚本内
oraclelinux-R6-U8-Server.iso在tmp下 我需要find /tmp -name *.iso
单独使用管道符的话 find /tmp -name *.iso | xargs mount -o loop (这里/mnt要写在哪里呢。。。尴尬)
请教各位大神。。。。
find /tmp -name ".iso" -exec mount -o loop {} /mnt \;
或者
find /tmp -name ".iso" -print0 | xargs -I {} mount -o loop {} /mnt
不过你这么挂载肯定是不行的, 同一个节点下,不能挂载多个文件啊. 感觉会出异常.你得判断是否只且只有这一个文件.
-exec 跟 xargs 都可以的. 注意exec需要"\;" 斜杠+分号结尾.
解释:
-exec 是find中的一个参数所以 "-"exec, 并且搜索到的文件已 {} 为界定, 并且以";"表示exec执行的命令结束, 由于分号在linux中有特殊含义, 所以"\"进行转义->所以结尾处必须为"\;".
如果你需要添加额外的命令,再继续指定即可.例如:(搜索home目录下,所有.sh结尾的文件, 并且ls -l 展示. find执行结束后再 执行echo 123 命令.
find /home -name "*.sh" -exec ls {} -l \;; echo 123
xargs 是linux的一个命令, 所以会加"|" 管道符, xargs的界定符需要人为指定, "-I"(大写i)是xargs程序的参数. 所以不需要加"\;"作为命令界定.
编辑回复