Macos 将文件从多个文件夹移动到子文件夹

Macos 将文件从多个文件夹移动到子文件夹,macos,shell,Macos,Shell,我有许多文件夹,其中包含文件,每个文件夹中都有一个子文件夹,名为wvfm。我要做的是将所有文件移动到每个wvfm文件夹中 我试着做下面这行,但不起作用 for i in "./*"; mv $i "./wvfm"; done 但这并不完全正确使用for循环(for i in*/;do)列出文件,然后移动到文件夹列出所有文件并将其保存到变量中(F=$(ls)) 然后移动所有文件,并排除文件夹(mv${F/wvfm/}wvfm),如下所示: #!/bin/bash subdirectory="wv

我有许多文件夹,其中包含文件,每个文件夹中都有一个子文件夹,名为
wvfm
。我要做的是将所有文件移动到每个wvfm文件夹中

我试着做下面这行,但不起作用

for i in "./*"; mv $i "./wvfm"; done

但这并不完全正确

使用
for
循环(
for i in*/;do
)列出文件,然后移动到文件夹列出所有文件并将其保存到变量中(
F=$(ls)

然后移动所有文件,并排除文件夹(
mv${F/wvfm/}wvfm
),如下所示:

#!/bin/bash
subdirectory="wvfm"
for i in */; do
cd $i
F=$(ls)
mv ${F/$subdirectory/} $subdirectory
cd ../
done

find*-maxdepth 0-typed | xargs-n1-I{}mv{}/*{}/wvfm

我们应该做到这一点;又快又脏。不是MacOS用户,但在bash中工作

说明:
find*-maxdepth 0-键入d
查找深度为0的所有目录(即:不下降目录),
管道到xargs,使用选项
-n1
,一次操作一个值,
-I replace str
,字符串替换(请参阅)。
操作命令:
mv{}/*{}/wvfm
为每个目录匹配替换
mv dirA/*dirA/wvfm

您将得到一个“错误”
mv:cannot move/wvfm'到其自身的子目录“wvfm/wvfm”
,但您可以忽略/利用它(又快又脏)

您可以使用以下各项覆盖所有基础:

for entry in $(find * -maxdepth 0 -type d); do
   (cd $entry; [[ -d wvfm ]] && \
    find * -maxdepth 0 ! -name wvfm -exec mv {} wvfm \;
   )
done
find*-maxdepth 0-键入d
,再次只查找顶级目录,
在子shell中,如果有目录
wvfm

查找除
wvfm
目录和
-exec
mv命令以外的所有内容

退出子shell后,您将返回起始(根)目录,准备进行下一次输入。

“/*”
正在查找名为
*
的文件,您不希望在那里使用引号。(但大约是
$i
!)它工作得很好,非常感谢!解释也很有用谢谢,效果很好。我也喜欢这个解释,它很有帮助。因为对方先回答了,所以我给了他答案,但是谢谢!对不起,我试过了,但我没有这方面的名声