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重命名该文件。文本。
任何解决方案或更正以使代码正常工作,将不胜感激。
答案 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'));
注释参考: