mkdir来自ls的结果

时间:2014-02-10 19:27:13

标签: bash mkdir ls

我想从/media/movies列出所有文件夹,并在/tmp/movies中创建具有相同名称的文件夹
以下代码段对我来说很好,除了带空格的名称,不知道如何引用

mkdir /tmp/movies
cd /tmp/movies/
ls -1 -d /media/share/*/ | xargs mkdir

名称中还有括号()以及单个'

实施例

你是下一个(2011)(tt1853739)

3 个答案:

答案 0 :(得分:5)

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

或者在一条线上:

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

答案 1 :(得分:2)

这应该有效:

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/{}" \;

答案 2 :(得分:1)

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

ls -1 /media/share/ | xargs -I % mkdir "%"