Bash mkdir来自ls的结果

Bash mkdir来自ls的结果,bash,mkdir,ls,Bash,Mkdir,Ls,我想列出/media/movies中的所有文件夹,并在/tmp/movies 下面的代码片段对我来说很好,除了带空格的名称,不知道如何在这里引用 mkdir /tmp/movies cd /tmp/movies/ ls -1 -d /media/share/*/ | xargs mkdir 名称中还有括号(和)和单格“ 例子 你是下一个(2011)(tt1853739)这应该可以: find /media/movies -maxdepth 1 -type d -exec bash -c "mk

我想列出
/media/movies
中的所有文件夹,并在
/tmp/movies

下面的代码片段对我来说很好,除了带空格的名称,不知道如何在这里引用

mkdir /tmp/movies
cd /tmp/movies/
ls -1 -d /media/share/*/ | xargs mkdir
名称中还有括号
和单格

例子 你是下一个(2011)(tt1853739)

这应该可以:

find /media/movies -maxdepth 1 -type d -exec bash -c "mkdir /tmp/\"$(basename {})\"" \;
如果仍然存在报价问题,请尝试以下方法:

find /media/movies -maxdepth 1 -type d -printf "%f" -exec mkdir "/tmp/{}" \;

您可以使用
xargs
中的
-I
选项精确设置ls-1输出的位置。然后可以将输出放在引号内,以便将带有空格的名称视为单个单词。试试这个:

ls -1 /media/share/ | xargs -I % mkdir "%"
或在一行上:

cd /media/movies && for dir in */; do mkdir "/tmp/movies/$dir"; done

这实际上很好,但我的名字中也有括号,这是无法处理的-现在如何转义?运行
find-maxdepth 1-type d-exec mkdir-p/tmp/movies/'{}'\/media/movies
的code>要简单得多。请注意,
/tmp/movies
是在必要时创建的。nope-
无法创建目录'/tmp/movies/media/movies/Fast&frequence Five(2011)':没有这样的文件或目录
,因为您可以看到这两个路径被合并。您是否先切换到
/media/movies
并运行
查找,或者您是否从其他地方运行了
查找/媒体/电影…
?这是一个非常有用的答案。谢谢这几乎完美,但不适用于单引号。很抱歉,我没有提到之前在我的问题作品完美无瑕,是接受的,如果没有一行
cd /media/movies && for dir in */; do mkdir "/tmp/movies/$dir"; done