我想要从我的路径中排除MSG
,PDF
并DOC
使用括号使用 shell 参数扩展。
当我放在MSG
括号之间时,仅删除M
而不是删除MSG
。我在互联网上浏览并阅读了文档,但仍然无法理解如何正确执行此操作。也许我不知道要搜索的正确关键字。
我的代码仅删除味精
find "${INPUTPATH}" -mindepth 2 -maxdepth 2 -type d -print0 | while IFS= read -r -d '' file; do
echo "${file}"
casenumber="${file#${INPUTPATH}/[MSG]}"
echo "${casenumber}"
done
输入:
/home/user/output/test/PDF/2218-0
/home/user/output/test/PDF/2218-0
/home/user/output/test/DOC/2218-0
/home/user/output/test/DOC/2218-0
/home/user/output/test/MSG/2226-4
/home/user/output/test/MSG/2226-4
/home/user/output/test/MSG/2222 -2
/home/user/output/test/MSG/2222 -2
/home/user/output/test/MSG/2218-0
/home/user/output/test/MSG/2218-0
当前删除 MSG 的输出:
/home/user/output/test/PDF/2218-0
/home/user/output/test/PDF/2218-0
/home/user/output/test/DOC/2218-0
/home/user/output/test/DOC/2218-0
/home/user/output/test/MSG/2226-4
SG/2226-4
/home/user/output/test/MSG/2222 -2
SG/2222 -2
/home/user/output/test/MSG/2218-0
SG/2218-0
预期输出:
/home/user/output/test/PDF/2218-0
/home/user/output/test/PDF/2218-0
/home/user/output/test/DOC/2218-0
/home/user/output/test/DOC/2218-0
/home/user/output/test/MSG/2226-4
/2226-4
/home/user/output/test/MSG/2222 -2
/2222 -2
/home/user/output/test/MSG/2218-0
/2218-0
我其实想用这种方式删除MSG、PDF和DOC
find "${INPUTPATH}" -mindepth 2 -maxdepth 2 -type d -print0 | while IFS= read -r -d '' file; do
echo "${file}"
casenumber="${file#${INPUTPATH}/[MSG][PDF][DOC]/}"
echo "${casenumber}"
done
我明白为什么上面的代码不起作用。但我首先需要解决 MSG 才能使这个工作
最终预期输出:
/home/user/output/test/PDF/2218-0
2218-0
/home/user/output/test/DOC/2218-0
2218-0
/home/user/output/test/MSG/2226-4
2226-4
/home/user/output/test/MSG/2222 -2
2222 -2
/home/user/output/test/MSG/2218-0
2218-0