![如何循环子目录并执行操作,同时忽略文件名中的空格](https://linux22.com/image/187016/%E5%A6%82%E4%BD%95%E5%BE%AA%E7%8E%AF%E5%AD%90%E7%9B%AE%E5%BD%95%E5%B9%B6%E6%89%A7%E8%A1%8C%E6%93%8D%E4%BD%9C%EF%BC%8C%E5%90%8C%E6%97%B6%E5%BF%BD%E7%95%A5%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E7%9A%84%E7%A9%BA%E6%A0%BC.png)
我在 Linux 环境中有以下文件夹结构:
|-- Fixed_Zip
| |-- ipython_notebooks
| | |-- notebook editor for compute_0anXhGEj.ipynb
| | |-- notebook editor for compute_aucScores.ipynb
| | |-- notebook editor for compute_nG27bM3w.ipynb
| | |-- notebook editor for compute_test_scored_scikit1.ipynb
如您所见,我的文件名带有空格。如何循环思考Fixed_Zip
文件夹中的所有子目录,并执行命令:
jupytext --to py {file}
?
另一件事,我正在从 groovy 文件执行命令,所以我想有一些语法需要调整。我能够在我的私人环境中运行以下命令并且它正在工作:
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for i in `find . -name '*.ipynb' -type f`; do
jupytext --to py "$i"
done
IFS=$SAVEIFS
但是,当我在 groovy 文件中执行相同操作时:
sh '''
SAVEIFS=$IFS
IFS=$(echo -en "\\n\\b")
for i in `find . -name '*.ipynb' -type f`; do
jupytext --to py "$i"
done
IFS=$SAVEIFS
'''
我收到以下错误:
raise InconsistentPath(
jupytext.paired_paths.InconsistentPath: './ipytho' is not a notebook.
答案1
“带空格的文件名”需要find
和xargs
。阅读man find xargs
并做类似的事情
find Fixed_Zip -type f -name '*.ipynb' -print0 | \
xargs -0 -r -n 1 jupytext --to py