2017-08-03 61 views
-3

该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 
+2

mmh问题在哪里? – DanieleO

+3

[这里阅读:为什么你不应该解析'ls']的输出(http://mywiki.wooledge.org/ParsingLs)。 – Anubis

+1

如果问题是:“实现目标的最糟糕的解决方案是什么”,那么这将是非常接近的。 – hek2mgl

回答

1

要将所有文件在当前目录到文件名的底座部分命名的目录:

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

这将跳过当前目录不在-f文件中的任何条目;它也会跳过任何已经有目录命名的条目。然后它创建目录(通过剥离“句点后跟随任何事物”来命名文件名),如果成功,则将文件移动到该目录中。

+0

这将工作的文件没有扩展名? – Arkadiy

+0

不是,但示例代码也不会,因为它会根据句点拆分文件名。 –

相关问题