32

假设我的当前目录是A。我想在 B 中创建一个目录B一个文件“myfile.txt” 。

如何在终端的一个命令中做到这一点?

编辑:

目录可以嵌套多次。就像我可能想在其中创建B/C/D然后“myfile.txt”。我也不想重复目录部分。

以下命令将在任何级别创建目录。

mkdir -p B/C/D 

mkdir -p B/C/D && touch B/C/D/myfile.txt

将创建目录和文件。但我不想在touch命令之后重复目录部分。那可能吗?

4

10 回答 10

41
mkdir B && touch B/myfile.txt

或者,创建一个函数:

mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }

使用 2 个参数执行它:创建路径和文件名。说:

mkfile B/C/D myfile.txt

myfile.txt将在目录中创建文件B/C/D

于 2013-08-01T06:27:17.037 回答
3

为此,您可以创建自己的函数。例如:

$ echo 'mkfile() { mkdir -p "$(dirname "$1")" && touch "$1" ;  }' >> ~/.bashrc
$ source ~/.bashrc
$ mkfile ./fldr1/fldr2/file.txt

解释:

  • ~/.bashrc使用echo命令将函数插入文件末尾
  • -p标志用于创建嵌套文件夹,例如fldr2
  • 使用命令更新~/.bashrc文件source
  • 使用mkfile函数创建文件
于 2018-04-15T08:05:22.457 回答
3

只需下面一个简单的命令就足够了。

mkdir a && touch !$/file.txt

谢谢

于 2018-07-24T16:25:07.230 回答
2

您可以创建一个解析参数的函数sed;

atouch() {
  mkdir -p $(sed 's/\(.*\)\/.*/\1/' <<< $1) && touch $1
}

然后,用一个参数执行它:

atouch B/C/D/myfile.txt
于 2019-12-17T21:29:10.733 回答
2

1-使您自己的命令将其添加到〜/ .bashrc:

function mkfile() { 
    mkdir -p  "$1" && touch  "$1"/"$2" 
}

保存,然后在不重新启动或注销的情况下使其可用,执行:$ source ~/.bashrc 然后您可以使用它:mkfile myfolder myfile.txt

2-或没有新命令,您只需键入:

$ mkdir folder && touch $_/file.txt

请注意 $_ = 此处的文件夹

于 2020-08-18T07:01:35.343 回答
2
mkdir -p Python/Beginner/CH01 && touch $_/hello_world.py

说明:-p -> 如果你想创建父目录和子目录,使用 -p $_ -> 将它用于当前目录,我们使用它内联

于 2020-11-28T13:44:50.980 回答
0

devnull 的回答提供了一个功能:

mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }

这个功能对我不起作用(我在 WSL Ubuntu 上运行 bash 4.3.48),但是一旦我删除了双破折号,它就起作用了。所以,这对我有用:

echo 'mkfile() { mkdir -p "$1" && touch "$1"/"$2" }' >> ~/.bash_profile
source ~/.bash_profile
mkfile sample/dir test.file
于 2018-06-15T18:27:31.647 回答
0

您可以安装脚本;

pip3 install --user advance-touch

安装后,可以使用 ad 命令

ad airport/plane/captain.txt
airport/
├── plane/
│   ├── captain.txt
于 2020-04-20T03:27:30.503 回答
0

下面是我在Windows 10 机器上使用 git-bash尝试的命令。这对我有用。假设我想创建一个名为“Files”的目录,在这个目录下我想有“file1.txt,file2.txt,file3.txt”..etc 文件

mkdir Files && touch $_/file1.txt $_/file2.txt $_/file3.txt
于 2021-01-06T19:51:04.470 回答
-4

这可能有效:

mkdir {{FOLDER NAME}}
cd {{FOLDER NAME}}
touch {{FOLDER NAME}}/file.txt
于 2017-06-13T05:53:19.033 回答