问题:在一个 kate 进程中编辑多个文件。
FILE_LIST 是一个包含路径列表的变量
FILE_LIST="$MAIN_PATH1 $MAIN_PATH2 ... $MAIN_PATH3"
/tmp
DST_DIR 是要编辑的文件的符号链接的目标文件夹。for 循环提供查找请求
查找请求使用 xargs 构建链接文件;之所以使用,
print0/-0
是因为某些文件名包含空格for A_DIR in $LIST_PATH ; do find "$A_DIR" -type f ! -name "*.*~" ! -path "*000_ERRORS*" ! -path "*KEEP*" -print0 | xargs -0 -I@ bash -c " ln -s \"@\" \"$DST_DIR/${@##*/}\"" done
到这里一切都好。所有符号链接都在一个文件夹中。
然后另一个人立即找到请求饲料凯特。
查找“$WORK_PATH”-type l -print0 | xargs -0 -I{} xdg-su -c "凯特 {} "
这并不像预期的那样工作。文件只能逐一访问。那不是目标。
但在另一个终端中,如果我手动运行第二个 find request 命令:
find /tmp/000_PGM_001 -type l -print0 | xargs -L 1 -0 -I{} bash -c "kate '{}'"
我可以在同一个实例中获取所有文件。我可以手动重复该命令,直到获得一次 kate 安装中的所有文件。
答案1
听起来像你需要的(假设是 GNU 系统)
dirs=(
"$MAIN_PATH1"
"$MAIN_PATH2"
"$MAIN_PATH3"
)
LC_ALL=C find "${dirs[@]}" -name '*000_ERRORS*' -prune -o \
'*KEEP*' -prune -o ! -name '*~' -type f -exec ln -st "$DST_DIR" {} +
至于你的凯特的事情:
find "$WORK_PATH" -type l -exec env LINK='{}' xdg-su -c 'kate "$LINK"' ';'
这里将文件路径作为环境变量传递,并假设xdg-su
脚本在桌面环境中运行的命令不会删除它。
无论如何,查看该xdg-su
脚本的内容,您只想向其传递固定命令以像这样运行kate "$LINK"
;向其传递任意数据将是不可靠且危险的。