Bash复制.ipynb文件报错及匹配前缀为py的文件命令咨询
Bash脚本问题解答
1. 原命令报错原因
错误核心是双引号抑制了通配符展开:
Bash中双引号仅允许变量、命令替换正常执行,会抑制通配符(*)的匹配逻辑。你将包含*.ipynb的路径整体包裹在双引号内,*会被当作普通字符处理,系统会直接查找名称为*.ipynb的字面文件,而非匹配所有.ipynb后缀的文件,因此触发找不到文件的报错。
正确的基础复制写法应该将通配符放在双引号外,同时保留路径变量的双引号避免路径含空格时出错:
CURRENT=${PWD} cp "$CURRENT/notebooks/"*.ipynb "/home/jovyan/shared/public/whatever"
2. 仅复制以py开头的.ipynb文件实现
直接修改通配符匹配规则即可,将*.ipynb替换为py*.ipynb就能匹配所有前缀为py的ipynb文件,命令如下:
CURRENT=${PWD} cp "$CURRENT/notebooks/py"*.ipynb "/home/jovyan/shared/public/whatever"
如果需要匹配的文件数量极大,也可以用更稳定的find实现避免参数过长问题:
find "$CURRENT/notebooks" -maxdepth 1 -type f -name "py*.ipynb" -exec cp {} "/home/jovyan/shared/public/whatever" \;
内容的提问来源于stack exchange,提问作者JFerro
相关产品推荐
相关产品推荐

