我在一个名为freesurfer的目录中有几个文件夹,如下所示:
freesurfer/sub-001/mri
freesurfer/sub-001/label
freesurfer/sub-001/surf
freesurfer/sub-001/stats
freesurfer/sub-002/mri
freesurfer/sub-002/label
freesurfer/sub-002/surf
freesurfer/sub-002/stats
我只想重命名‘stats’文件夹,并将其移动到其他位置:
freesurfer/sub-001/mri
freesurfer/sub-001/label
freesurfer/sub-001/surf
freesurfer/sub-001/sub-001_stats
freesurfer/sub-002/mri
freesurfer/sub-002/label
freesurfer/sub-002/surf
freesurfer/sub-002/sub-002_stats
我已经成功地编写了以下代码:
while read dir ; do
new_dir=$(rev <<< "$dir" | sed 's~/~_~' | rev);
echo "mv $dir $new_dir";
done < <(find . -type d -name 'stats')
当我在‘mv’命令前加上‘ECHO’并在‘STATS’目录前面附加文件夹名称时,上面的代码似乎运行得很好,但当我取消‘ECHO’时,它给出了一个错误:“没有这样的文件或目录”。我做错了什么?
1条答案
按热度按时间uqjltbpv1#
您用于创建
new_dir
的代码不正确。它正在创造freesurfer/sub-002_stats
而不是freesurfer/sub-002/sub-002_stats
。但这并不能解释您收到的错误,因为它只是不正确地重命名文件(将所有文件移到父目录中)。尝试: