我尝试将文件从一个目录移动到另一个目录但是没有用。所以我搜索并找到了符合我想要的答案。当我运行它,修改到我的目录时,它给出了
想做什么:
${filename,,*}
:糟糕的替代品!
这就是我使用的:
for filename in *; do
case "${filename,,*}" in
b01.nii*) mv "$filename" "$/Users/dave/Desktop/test/untitled_folder_*/str" ;;
vol_01.nii*) mv "$filename" "$/Users/dave/Desktop/test/untitled_folder_*/rs" ;;
*) echo "don't know where to put $filename";;
esac
done
谢谢
答案 0 :(得分:0)
你有两个错误:
主要问题是for命令,变量$filename
包含*
而不是真实文件名。你应该使用$(find . -name "*");do
第二个是这样的:
你必须确定关于$filename
变量的值,即在我的bash shell中,文件名输出是
./b01.nii
./vol_01.nii
最好在./b01.nii* )
我已将mv
替换为echo
,只是为了测试脚本:
for filename in $(find . -name "*"); do
case ${filename} in
./b01.nii* )
echo "$filename ${filename}/Users/dave/Desktop/test/untitled_folder_*/str" ;;
./vol_01.nii* )
echo "$filename ${filename}/Users/dave/Desktop/test/untitled_folder_*/rs" ;;
*)
echo "don't know where to put $filename";;
esac
done
我的输出是
sh-4.3$ bash -f main.sh
don't know where to put .
don't know where to put ./main.sh
don't know where to put ./.cg_conf
don't know where to put ./myfile_12345
don't know where to put ./myfile_17676
don't know where to put ./myfile_9898
don't know where to put ./Newfile.sh
./b01.nii ./b01.nii/Users/dave/Desktop/test/untitled_folder_*/str
./vol_01.nii ./vol_01.nii/Users/dave/Desktop/test/untitled_folder_*/rs
此致
克劳迪奥