Linux:如何将每个文件移动到相应命名的文件夹中

标签 linux shell

我这里有一个小而有趣的任务。例如,我有一个具有相同扩展名的文件列表。

a.abc
b.abc
c.abc

我在这里想要的是首先为每个 .abc< 创建名为 abc... 的文件夹 文件,然后将每个文件移动到其文件夹中。

我能够使用命令行 find ... | 非常直接地完成第一步… | xargs mkdir...,但是当我尝试使用类似的 cmd 将每个文件移动到其自己的文件夹中时,我找不到答案。

我对这里的 cmd 不太熟悉,而且我的内存非常模糊,在 find cmd 中我可以使用某种反向引用来重用文件/目录名称,我记得吗错了吗?进行了搜索,但找不到好的引用。

谁能帮我完成这里的cmd?

谢谢。

最佳答案

这是你的一个类轮

find . -name "*.abc" -exec sh -c 'NEWDIR=`basename "$1" .abc` ; mkdir "$NEWDIR" ; mv "$1" "$NEWDIR" ' _ {} \;

或者替代地

find . -name "*.abc" -exec sh -c 'mkdir "${1%.*}" ; mv "$1" "${1%.*}" ' _ {} \;

this是比手册页更好的使用 find 的指南。

This页面解释了正在进行的参数扩展(以了解 ${1%.*}

关于Linux:如何将每个文件移动到相应命名的文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11961689/

相关文章:

linux - 我正在从 Fedora 源 rpm 为 RHEL 5 构建自定义 openssl 1.0.2f,但它给了我错误

c - Pipe() fork() 和 exec

linux - 如何在已打开的特定终端上启动 shell 命令?

linux - 我怎样才能让 bash 阻止从我产生的工作中获取一行标准输出

linux - 如何通过 `bash`判断一个线程是不是内核线程?

linux - 错误:general protection fault fffc

c - 如何通过 getaddrinfo 限制建议端口的数量

linux - 强制 ELF 二进制文件使用另一个 libc.so

c++ - 第二次无法捕获段错误

java - 如何使用 Shell 脚本在日期模式之前换行?