创建带有文件名的文件夹并将文件移动到文件夹

时间:2020-02-27 12:52:59

标签: shell

我有一堆以.EHZ结尾的文件,我正在尝试为每个文件创建一个文件夹,然后将它们移动到相应的文件夹中。另外,这些文件在我想要删除的名称上附加了Z。因此,理想情况下,我将拥有例如这些文件

AAAAZBBBBZ.EHZ  
CCCCZDDDDZ.EHZ  
EEEEZFFFFZ.EHZ

转到文件夹

AAAABBBB
CCCCDDDD
EEEEFFFF

到目前为止我写的是

dir0=pwd
for file in `ls *.EHZ`
do
name=echo $file | head 10
mkdir -p $name
mv "$file" "$name"
done

P.S。我在stackoverflow中找到了许多针对此问题的答案,但在Shell上却找不到,所以我想问一下。

1 个答案:

答案 0 :(得分:2)

能否请您尝试以下。我在代码中使用了cp命令来保证安全,您可以将其删除并放在其中,以mv的形式将文件实际移至文件夹。

for file in *.EHZ
do
   name="${file%.*}"
   actual_directory_name="${name::-1}"
   if [[ ! -d "$actual_directory_name" ]]
   then
        mkdir "$actual_directory_name"
   fi
   cp "$file" "$actual_directory_name"
   if [[ -s "$actual_directory_name/$file" ]]
   then
        echo "$file is moved Successfully to directory name $actual_directory_name now.."
   else
        echo "Please check seems $file is NOT moved to directory $actual_directory_name."
   fi
done