Bash脚本查找行为

时间:2017-09-06 17:02:28

标签: bash find

     for subj in `cat dti_list.txt`; do
     echo $subj
     find . -type f -iname '*306.nii' -execdir bash -c 'rename.ul "$subj" DTI_MAIN_AP.nii *.nii' \+

完成

我在使用一个小的bash脚本时遇到了一些麻烦,当我使用rename.ul函数时,它会添加名称而不是替换。 目前,代码在旧名称前面添加了DTI_MAIN_AP.nii。

我的目标是从subj列表中替换名称,并使用find在* 306.nii文件中搜索任何目录,然后使用execdir执行rename.ul函数以从dti_list重命名该文件。文本。

任何解决方案或更正以使代码正常工作,将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您只想将每个目录中与DTI_MAIN_AP.nii匹配的第一个文件重命名为find . -type f -iname '*306.nii' \ -execdir sh -c '[[ -e DTI_MAIN_AP.nii ]] || mv "$1" DTI_MAIN_AP.nii' _ {} + ,则可能如下所示:

*306.nii

如果不想在dti_list.txt上进行匹配,而是想对来自while IFS= read -r -d '' filename <&3; do find . -type f -name "$filename" \ -execdir sh -c '[[ -e DTI_MAIN_AP.nii ]] || mv "$1" DTI_MAIN_AP.nii' _ {} + done <dti_list.txt 的名称进行迭代,则可能会显示如下:

var youtubeVids = Array.prototype.slice.call(document.getElementsByClassName('youtube'));

注释参考: