gpt4 book ai didi

bash - "dir/*: No such file or directory"与 find -exec ... "{}/*"

转载 作者:行者123 更新时间:2023-11-29 09:45:32 24 4
gpt4 key购买 nike

当前目录包含文件和目录。这些目录没有子目录,但可能包含零个或多个文件,例如:

./file1
./file2
./directory1/file3
./directory2/file4
./directory2/file5
./directory3/

当我执行 find 时。 -type d -maxdepth 1 我得到目录列表:

./directory1
./directory2

如果我执行 mv ./directory1/* . directory1 中的所有文件都移动到当前级别 . 所以我想我可以使用 find -exec 来做所有事情一口气:

find . -type d -maxdepth 1 -exec mv "{}/*" . \;

但是我得到了这样的回应:

mv: rename ./directory1/* to ./*: No such file or directory

如何将子目录中的所有文件移动到当前级别?

最佳答案

Globbing(将 foo/* 替换为 foo/dirAfoo/dirB 等)由 shell执行/em>,而不是 mv。除非您手动启动,否则 find -exec 不会启动 shell;例如:

find . -type d -mindepth 1 -maxdepth 1 \
-exec sh -c 'for dir; do mv -- "$dir"/* .; done' _ {} +

关于bash - "dir/*: No such file or directory"与 find -exec ... "{}/*",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52559783/

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