如何循环子目录并执行操作,同时忽略文件名中的空格

如何循环子目录并执行操作,同时忽略文件名中的空格

我在 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

“带空格的文件名”需要findxargs。阅读man find xargs并做类似的事情

find Fixed_Zip -type f -name '*.ipynb' -print0 | \
    xargs -0 -r -n 1 jupytext --to py

相关内容