将目录中尚未存在的所有文件移动到自命名目录中?

时间:2017-08-03 10:39:12

标签: linux bash

此bash命令会将目录中尚未存在的所有文件移动到新的自命名文件夹中。

ll | grep ^- | awk -F"." '{print $2 "." $3}' | awk -F":" '{print $2}' | awk '{$1=""; print $0}' | cut -c2- | awk -F"." '{print "mkdir ""$1"";mv ""$1"."$2"" ""$1"""}' > tmp;source tmp

1 个答案:

答案 0 :(得分:1)

将当前目录中的所有文件移动到以文件名基本部分命名的目录中:

for f in *
do 
  [ -f "$f" -o -d "${f%.*}" ] || continue
  mkdir "${f%.*}" && mv "$f" "${f%.*}"
done

这会跳过当前目录中不是-f个文件的任何条目;它还会跳过任何已经为其命名的目录。然后它创建目录(通过从文件名中删除“句点后跟任何内容”命名),如果成功,则将文件移动到该目录中。