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
!)它工作得很好,非常感谢!解释也很有用谢谢,效果很好。我也喜欢这个解释,它很有帮助。因为对方先回答了,所以我给了他答案,但是谢谢!对不起,我试过了,但我没有这方面的名声