Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 使用BASH使用"_&引用;文件名中的分隔符_Shell_Filenames_Delimiter_Organization_Subdirectory - Fatal编程技术网

Shell 使用BASH使用"_&引用;文件名中的分隔符

Shell 使用BASH使用"_&引用;文件名中的分隔符,shell,filenames,delimiter,organization,subdirectory,Shell,Filenames,Delimiter,Organization,Subdirectory,我觉得我想做的事情很简单,但我是shell脚本的新手,所以我非常感谢您能给我的任何帮助 问题:我有一个文件夹,包含各种文件类型的文件(即“.jpg”、“.psd”、“.png”),需要将这些文件组织到子目录中。每个文件的文件名遵循相同的约定:“number_name.extension”。几个文件共享相同的“number”值,我希望脚本所做的是创建一个具有“number”值的文件夹(如果它还不存在),并将所有具有相同“number”值的文件移动到所述文件夹中,而不考虑文件类型/扩展名 我知道这在

我觉得我想做的事情很简单,但我是shell脚本的新手,所以我非常感谢您能给我的任何帮助

问题:我有一个文件夹,包含各种文件类型的文件(即“.jpg”、“.psd”、“.png”),需要将这些文件组织到子目录中。每个文件的文件名遵循相同的约定:“number_name.extension”。几个文件共享相同的“number”值,我希望脚本所做的是创建一个具有“number”值的文件夹(如果它还不存在),并将所有具有相同“number”值的文件移动到所述文件夹中,而不考虑文件类型/扩展名

我知道这在伯恩身上是可能的,但我很难理解。我到处寻找类似的线索,但似乎没有什么能满足我问题中的所有条件。任何帮助都将不胜感激

那么:

for f in *; do mkdir -p ${f%%_*}; mv $f ${f%%_*}; done
这将保留完整的文件名,但您可能希望修剪数字:

for f in *; do 
  dir=${f%%_*}
  mkdir -p $dir
  mv $f $dir/${f#*_} 
done

这很简单,很漂亮,珀塞尔先生。非常感谢你!