gpt4 book ai didi

linux - 移动某个子目录中的所有文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:20 25 4
gpt4 key购买 nike

我的目录结构是这样的:

/root/1232/medium
/root/1234/medium
/root/1245/medium
/root/1253/medium
/root/1263/medium ...

在这些文件夹 1232、1234、1245 ... 中的每一个中,我都有我想移动到它们的中子目录中的文件。这意味着/root/1232/中的所有文件都应移至/root/1232/medium,而/root/1234/中的所有文件均应移至/root/1234/medium。我尝试了各种查找版本,但都没有用。问题是我有超过 15000 个这样的文件夹,否则我会手动移动它。谢谢。

最佳答案

如果您使用的是较新版本的 bash(即不超过 10 年),您可以通过发出以下命令来启用扩展通配:

shopt -s extglob

在许多其他有用的功能中,扩展的 globbing 允许您通过调用 !(pattern) 进行负 globbing

所以要解决你的问题,你可以做类似的事情

for folder in /root/12* ; do
mv $folder/!(medium) $folder/medium/
done

这将遍历匹配模式 /root/12* 的所有文件夹(或与此相关的任何其他项目),然后对每个文件夹尝试将所有内容移动到其中没有被称为 medium 的目录实际上被称为 medium。就是这样:)

另见 this SO question有关负/反向 globbing 的更多信息。

如果出于某种原因你不想启用扩展 globbing(或者你的 bash 不支持它)你可以做一些反向 grepping 来代替:

for basefolder in /root/12* ; do
for entry in $(ls $basefolder | grep -v medium) ; do
mv $basefolder/$entry $basefolder/medium
done
done

关于linux - 移动某个子目录中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42325576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com