Bash

如何在忽略文件名中的空格的同時遍歷子目錄並執行操作

  • January 26, 2021

我在 Linux env 中有以下文件夾結構:

|-- 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.

“帶空格的文件名”呼喚findand xargs。閱讀man find xargs並做類似的事情

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

引用自:https://unix.stackexchange.com/questions/631118