mkdir `*/pictures`

mkdir `*/pictures`

我的文件夹树

.
|-- 1
|-- 2
|-- 3
...
|-- 777

我想为每个文件夹创建文件夹图片。

我跑不成功

mkdir */pictures

当然,一种方法是mkdir使用 Vim 的正则表达式创建 777 命令。但是,我不知道如何在 shell 中做到这一点。

你怎么mkdir */pictures

答案1

for x in `seq 1 777`
do
    mkdir $x/pictures;
done

此外,您过去曾提到过zsh,这至少在bash和下无需修改就可以工作zsh

答案2

与其他的几乎相同,但添加了斜线,因此它只计算目录而不计算常规文件

for x in */
do
    mkdir $x/pictures;
done

答案3

有很多方法可以做到这一点,我认为这是最简单的:

for f in *; do mkdir $f/pictures; done

这种方法既快捷又简单,会为当前目录中的所有内容创建一个子目录。如果当前工作目录中有文件,您将收到无害的错误。如果这让您感到困扰,最好使用 find 或 seq 等更复杂的解决方案。如果您的目录已编号,那么 Sean 的 seq 示例(在 bash 中)的更简单版本是

mkdir {1..777}/pictures

顺便说一句,mkdir 可以轻松地同时创建多个目录:

mkdir 1/pictures 2/pictures

问题是由于目录尚不存在,所以 */pictures 在 shell 中不会扩展为任何内容。

答案4

我假设您正在使用 bash......

find . -mindepth 1 -maxdepth 1 -type d | while read dir; do mkdir $dir/pictures; done

或者如果目录中的所有内容都是目录

ls | while read dir; do mkdir $dir/pictures; done

如果您使用 tcsh,则必须使用不雅的 for 循环来执行此操作。

相关内容