我这里有一个小而有趣的任务。例如,我有一个具有相同扩展名的文件列表。
a.abc
b.abc
c.abc
我在这里想要的是首先为每个 .abc< 创建名为
文件,然后将每个文件移动到其文件夹中。a
、b
、c
... 的文件夹
我能够使用命令行 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/