Bash 将每个文件移动到其自己的目录中
我试图编写一个脚本,其中一个目录中有多个文件,但我想为每个文件创建一个具有特定扩展名的目录(目录名中没有文件扩展名),并将每个文件移动到它们自己的目录中,然后对其各自目录中的每个文件执行某些操作。 我真的是新来的,所以这是我得到的,它不工作,所以任何帮助将不胜感激Bash 将每个文件移动到其自己的目录中,bash,Bash,我试图编写一个脚本,其中一个目录中有多个文件,但我想为每个文件创建一个具有特定扩展名的目录(目录名中没有文件扩展名),并将每个文件移动到它们自己的目录中,然后对其各自目录中的每个文件执行某些操作。 我真的是新来的,所以这是我得到的,它不工作,所以任何帮助将不胜感激 for file in *; do if [ $file=[$.sff]] ; then mkdir ${$file/.sff/""/} mv $file ${fil
for file in *;
do
if [ $file=[$.sff]] ; then
mkdir ${$file/.sff/""/}
mv $file ${file/.sff/""/}/
fi
for $file in $file/
do { ......
}
done
您不需要if语句或case语句。只要做:
die() { echo "$*" >&2; exit 1; }
for file in *; do
dir=${file%.*}
test -d $dir || mkdir $dir # or just mkdir -p $dir
test -f $dir && die "$dir exists and is a file!"
mv $file $dir
done
for dir in *; do ...; done # Do something in each directory
${}有一些特殊的语法,应该查找一下-我相当确定它不接受
“
作为空字符串,只需将其忽略即可。或者您可以使用$(echo$file|sed's/\.sff/')
for file in *.*
do
dir=${file%.*}
mkdir "$dir"
newfile=$dir/$file
mv "$file" "$newfile"
... do something with "$newfile"
done