1. > 智能数码 >

linux移动 linux移动压缩包到指定目录

Linux:文件解压、复制和移动的若干坑

Linux下进行文件的解压、复制、移动应该是最常见的操作了。尤其是我们在项目中使用大量的数据集文件(比如机器学习)文件。然而使用这些命令时一不留神就会掉进坑里,这篇文章我们就来细数用Shell进行文件操作的这些坑。

Linux下压缩文件的常见扩展名包括 .gz , .tar , .tar.gz , .zip 等。这些压缩格式都能够跨平台(Windows/Mac/Linux)使用。下面我们以 .zip 文件为例子来讲解。我们已知一个文本文件压缩包 test.zip ,想把它解压,很简单,运行 unzip 命令即可:

如果我们想要将 test.txt 重新压缩呢?你可能情不自禁会执行 zip test.txt ,然后我们发现提示:

其实是传参数传错了,导致 zip 误把 test.txt 当成压缩后的文件名了,这当然不是合法的。我们看 zip 的参数构成:

linux移动 linux移动压缩包到指定目录linux移动 linux移动压缩包到指定目录


[-b path] 是压缩后的 .zip 文件的路径, zipfile list 是待压缩的文件列表。于是,我们这样写即可成功压缩:

当然, zip 也支持将多个文件压缩:

此时我们发现再解压 test3.zip 会发现重新得到了两个原始文件:

zip 也支持对目录压缩,如我们尝试压缩 test 目录:

此时再解压 test4.zip 则会重新生成 test 目录:

不过, zip 是将输入的文件列表 分别 进行压缩的操作,即是对目录来进行压缩也是对目录内的所有文件one-by-one的操作。那我们需要将很多文件先打包成一个文件,然后再压缩呢?此时就要用到 tar 了。

很多人误解 tar 是个压缩命令,其实压缩命令是 gzip 、 xz 以及我们上文提到的 zip 这些。 tar 是个打包命令,只不过附带压缩与解压的功能。 tar 的选项多如牛毛,为了减轻大家的记忆负担,我们只介绍下面两个选项:

-c : 建立打包文件(可搭配 -v 将过程中打包的文件可视化);

-x :解包或解压缩的功能(可搭配 -C 在特定目录解压);

(其实还有表示通过gzip进行压缩/解压缩的 -z ,通过bzip2的支持进行压缩/解压缩的 -j ,通过xz的支持进行压缩解压缩的 -J 等,但我们这里统一用 .zip 示范,就省去这些参数了)

那么,我们只需要记住下面的命令即可:

压缩: tar -cv -f filename.zip 要被压缩的文件或目录名称

解压缩: tar -xv -f filename.zip -C 欲解压的目录(这个目录必须已经存在)

注意,压缩传参顺序是压缩后的.zip文件在前,压缩前的文件在后 ,别搞错了。(让人联想到gcc编译器,不过 gcc 传参时规定是 -o output_file.out 的形式来指定输出的可执行文件,就回避了这个顺序问题)

比如,我们要将 test 文件夹(该文件夹下有一个 test.txt 文件)压缩,可以运行如下命令:

linux移动 linux移动压缩包到指定目录linux移动 linux移动压缩包到指定目录


然后将其解压到当前目录,可运行如下命令:

多个文件压缩:

然后将其解压到当前目录:

由上面所说, zip / unzip 和 tar 都是压缩什么解压出来就是什么,原来是目录就是目录,原来没目录不会帮你自动生成一个目录 ,但Linux或Mac系统的可视化压缩工具就不一样了(在Mac中被称为「归档实用工具」)。Mac中对目录压缩时压缩命令和 tar 命令是等效的,比如我们想用Mac自带的压缩工具压缩 test 文件夹:

会生成对应的归档文件:

再解压会得到同样的文件夹(会自动帮我们重命名),不会帮我们生成多余的目录:

这个文件夹内部才是我们需要的文件:

它会自动帮我们生成一个名为 归档.zip 的文件:

这个文件夹内部才是我们需要的文件:

这个文件夹内部才是我们需要的文件:

这在对大量文件操作时需要额外注意,否则会白白开销你一次拷贝文件的时间!

我们紧接着上面的情景。假设我们当前的目录为项目目录,而我们手滑使用了系统自带的可视化解压工具生成了一个多余的目录。我们接下来要把系统生成的多余的 归档 文件夹里的文件拷贝到当前目录,那么我们可以使用带 r 参数的 cp 命令:

这里 -r 参数表示递归复制命令,用于目录的递归复制。注意命令中的 归档/ 表示 归档 目录下的所有文件,意思和 归档/* 相同:

选项参数 -r 写成 -R 是等效的:

但如果直接传入参数 归档 ,则表示将这个目录整个地复制:

同一个目录下不可能有两个相同名称的子目录,这当然就会出错,当然我们可以将其复制到另外一个目录里:

你可能要问,加 r 和不加 r 有啥区别?如果不加 r ,则默认是跳过目录的,也就是说只能copy文件:

我们还是紧接着上面的场景。假定我们已经将 归档 文件夹中的 test.txt 、 test2.txt 成功拷贝到当前项目目录了。现在我们有了个新的需求:我们在项目目录中建了一个 data 子目录,现在需要将项目目录中的 test.txt 、 test2.txt 移动到 data 子目录中。这就需要如下命令:

注意,如果有多个源文件或目录,则最后一个目标文件(也就是这里的data)一定是目录 。当我们只移动一个文件时,就有潜在的二义性。这里因为 data 目录本身存在,我们移动 test.txt 到 data 目录还能正常执行:

但是如果data目录不存在,就会将 mv 解释为重命名的意思,比如如果我们将 data 目录删除再执行:

此时就等效于把 test.txt 更名为 data 文件:

可以看出,第一个字母是 - ,也就意味着 data 是普通文件,不是目录(是目录的话第一个字母是 d )。

因此,使用 mv 语句时要格外小心,因为它既有移动到目录的作用,也有重命名的作用,一不注意就可能出错!

有移动到目录的作用,也有重命名的作用,一不注意就可能出错!

就可能出错!

linux如何复制移动文件

linux如何复制文件夹和移动文件夹

linux下文件的复制、移动与删除命令为:cp,mv,rm

一、文件复制命令cp

linux移动 linux移动压缩包到指定目录linux移动 linux移动压缩包到指定目录


命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)

cp [option] source1 source2 source3 ... directory

参数说明:

-a:是指archive的意思,也说是指复制所有的目录

-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身

-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制

-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作

-l:建立硬连接(hard link)的连接文件,而非复制文件本身

-p:与文件的属性一起复制,而非使用默认属性

-r:递归复制,用于目录的复制操作

-s:复制成符号连接文件(symbolic link),即“快捷方式”文件

-u:若目标文件比源文件旧,更新目标文件

如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:

cp /test1/file1 /test3/file2

二、文件移动命令mv

命令格式:mv [-fiv] source destination

参数说明:

-f:force,强制直接移动而不询问

-i:若目标文件(destination)已经存在,就会询问是否覆盖

-u:若目标文件已经存在,且源文件比较新,才会更新

如将/test1目录下的file1复制到/test3 目录,并将文件名改为file2,可输入以下命令:

mv /test1/file1 /test3/file2

三、文件删除命令rm

命令格式:rm [fir] 文件或目录

参数说明:

-f:强制删除

-i:交互模式,在删除前询问用户是否操作

-r:递归删除,常用在目录的删除

如删除/test目录下的file1文件,可以输入以下命令:

rm -i /test/file1

复制:

CP命令

格式: CP [选项] 源文件或目录 目的文件或目录

选项说明:-b 同名,备分原来的文件

-f 强制覆盖同名文件

-r 按递归方式保留原目录结构复制文件

cp -Rf /home/user1/* /root/temp/

将 /home/user1目录下的所有东西拷到/root/temp/下而不拷贝user1目录本身。

即格式为:cp -Rf 原路径/ 目的路径/

移动:

mv ./WorkReport/web.xml ./WorkReport/WEB-INF/注:移动/WorkReport/web.xml文件到/WorkReport/WEB-INF/mv /data/new/data/old/注:移动/data/new到/data/old/文件夹下

注意点:移动文件夹的话就不要再加 / 了

如果是移动文件夹下的所有文件的话就可以文件夹后面跟上 /*

mv /data/new/* /data/old/

LINUX 移动文件命令

语法:mv [选项] 源文件或目录 目标文件或目录,如下:mv a.txt b.txt c3.txt test3将这三个文件移动到test3文件中

功能:创建一个目录(类似MSDOS下的md命令),mkdir命令。语法:mkdir [选项] dir-name

说明:该命令创建由dir-name命名的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或 文件名称。

扩展资料:

说明:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),他将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参加参数可以有很多个,mv命令将个参数指定的源文件均移至目标目录中。

命令中各选项的含义为:

-i:交互式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统会询问是否覆盖,用户输入‘y进行覆盖,输入'n'则不覆盖,这样可以避免误覆盖文件。

-f:禁止交互式操作。在mv操作要覆盖某已有的目标文件或目录时不给任何指示,默认覆盖。

如果所给目标文件(不是目录)已存在,此时该文件的内容将后备新文件覆盖,为防止用户用mv命令破坏另一个文件,使用mv命令移动文件时,最好使用i选项。

参考资料:百度百科 MV (linux命令)

linux 怎样将一个文件移动到上级目录

1、首先打开终端,连接至centos。

2、创建一个文件夹test1。

3、在test1中创建一个文件夹test2。

4、在test2中创建一个文件1.txt。

5、使用mv命令+文件+路径,移动该文件。在linux中..(两个点)表示上一级目录。

6、这个时候当前目录test2下已经没有文件了,返回test1查看情况。1.txt已经被移动过来了。

Linux如何移动文件夹(Linux如何移动文件)

1、linux如何移动文件到指定目录。

2、linux如何移动文件并重命名。

3、linux如何移动文件。

4、linux如何移动文件到另一个文件夹。

1."linux如何移动文件,为您提供linux如何移动文件图文信息,打开桌面上的终端,并输入命令sudomv。

2.把需要移动的文件拖入到mv后面,在文件名后面输入需要移动的目录的路径。

3.按回车键,文件不在了说明已经移动了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息