1. 程式人生 > >文件管理命令

文件管理命令

linux文件

1、顯示當前工作目錄

[root@centos7 ~]#cd /bin
[root@centos7 bin]#pwd

/bin
[root@centos7 bin]#pwd -P
/usr/bin
[root@centos7 bin]#ll /bin
lrwxrwxrwx. 1 root root 7 Jul 14 11:16 /bin -> usr/bin

如果當前工作目錄是一個軟連接目錄,則pwd默認當前目錄是軟連接的目錄,加上P就顯示軟連接源文件的目錄。

2ls 命令

*ls命令默認數字排在字母的前面
*顯示軟連接目錄和普通目錄的區別-------如果ll顯示一般目錄加/和不加沒有什麽區別,但對於軟連接目錄,加/代表軟連接的源目錄,不加代表軟連目錄。
-d
代表只顯示目錄,不遞歸進入子目錄。
加上-d顯示的是源文件的bin

root@centos7 ~]#ll -d /bin

lrwxrwxrwx. 1 root root 7 Jul 14 11:16 /bin -> usr/bin [root@centos7 ~]#ll -d /bin/

dr-xr-xr-x. 2 root root 45056 Jul 18 07:58 /bin/

3、文件通配符
v*
匹配零個或多個字符
v?
匹配任何單個字符
v~
當前用戶家目錄
v~mage
用戶mage家目錄
v~+
當前工作目錄
v~-
前一個工作目錄
v[0-9]
匹配數字範圍
v[a-z]
:字母
v[A-Z]
:字母
v[wang]
匹配列表中的任何的一個字符
v[^wang]
匹配列表中的所有字符以外的字符
v[:digit:]
:任意數字,相當於0-9
v[:lower:]
:任意小寫字母
v[:upper:]:
任意大寫字母
v[:alpha:]:
任意大小寫字母
v[:alnum:]
:任意數字或字母
v[:blank:]
:水平空白字符
v[:space:]
:水平或垂直空白字符
v[:punct:]

:標點符號
v[:print:]
:可打印字符
v[:cntrl:]
:控制(非打印)字符
v[:graph:]
:圖形字符
v[:xdigit:]
:十六進制字符

大小寫字母的說明
[root@centos6 app]#t
ouch f{a..c}
[root@centos6 app]#ls
fa fb fc
[root@centos6 app]#touch f{A..C}
[root@centos6 app]#ls
fa fA fb fB fc fC
[root@centos6 app]#ll f[a-c]
-rw-r--r--. 1 root root 0 Jul 20 08:09 fa
-rw-r--r--. 1 root root 0 Jul 20 08:09 fA
-rw-r--r--. 1 root root 0 Jul 20 08:09 fb
-rw-r--r--. 1 root root 0 Jul 20 08:09 fB
-rw-r--r--. 1 root root 0 Jul 20 08:09 fc
[root@centos6 app]#ll f[A-C]
-rw-r--r--. 1 root root 0 Jul 20 08:09 fA
-rw-r--r--. 1 root root 0 Jul 20 08:09 fb
-rw-r--r--. 1 root root 0 Jul 20 08:09 fB
-rw-r--r--. 1 root root 0 Jul 20 08:09 fc
-rw-r--r--. 1 root root 0 Jul 20 08:09 fC
總結:[a-c][A-C]代表大小寫字母,並且從並且小寫字母在前.
4
touch命令

*touch創建空文件和>>>的區別
>
創建空文件,如果文件存在,則會把文件情況,比較危險
touch
創建空文件,如果文件存在,則會更改文件的時間戳
>>
創建空文件,如果文件存在,則不改變文件內容也不改變時間戳,是最安全的創建空文件
touch
可以創建多個空文件

*指定時間戳
[root@centos6 app]#touch -t 201810201230.20 f3
[root@centos6 app]#stat f3
File: `f3'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 13 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-10-20 12:30:20.000000000 +0800
Modify: 2018-10-20 12:30:20.000000000 +0800
Change: 2017-07-19 20:27:22.629271264 +0800

stat命令看時間戳

5cp命令

*cp在復制的時候可能會丟失一些源數據
[root@centos6 app]#cp /etc/issue /app/xxx
[root@centos6 app]#ll !*
ll /etc/issue /app/xxx
-rw-r--r--. 1 root root 55 Jul 19 20:30 /app/xxx #
時間戳沒變
-rw-r--r--. 1 root root 55 Jul 15 20:56 /etc/issue
為了避免丟失源數據,可以使用-a進行備份,-p 保留權限,所有者和時間戳, --preserv=all 保留所有源數據

*cp復制軟連接文件

[root@centos7 ~]#ll /etc/grub2.cfg
lrwxrwxrwx. 1 root root 22 Jul 14 11:20 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
[root@centos7 ~]#cp /etc/grub2.cfg /app
[root@centos7 ~]#ll /app
total 24
-rw-r--r--. 1 root root 5275 Jul 18 10:49 cmd.log
-rw-r--r--. 1 root root 4215 Jul 19 20:47 grub2.cfg#
復制的是軟連接指向的源文件
drwxr-xr-x. 2 root root 230 Jul 19 18:52 music
-rwxr-xr-x. 1 root root 271 Jul 19 19:13 music.sh
-rw-r--r--. 1 root root 384 Jul 18 10:49 time.log
cp
復制軟連接文件時復制的是軟連接指向的源文件,可以用-P選項,不跟隨軟連接源。

*cp復制特殊文件
[root@centos6 app]#cp -a /dev/sda1 /app
[root@centos6 app]#ll
total 4
prw-r--r--. 1 root root 0 Jul 19 18:58 f1
srwxr-xr-x. 1 root root 0 Jul 19 19:02 f2
-rw-r--r--. 1 root root 0 Oct 20 2018 f3
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 sda1 #
屬性相同
-rw-r--r--. 1 root root 55 Jul 19 20:30 xxx
[root@centos6 app]#ll /dev/sda1
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 /dev/sda1 #
屬性相同
[root@centos6 app]#cp -a /dev/zero /app
[root@centos6 app]#ll
total 4
prw-r--r--. 1 root root 0 Jul 19 18:58 f1
srwxr-xr-x. 1 root root 0 Jul 19 19:02 f2
-rw-r--r--. 1 root root 0 Oct 20 2018 f3
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 sda1
-rw-r--r--. 1 root root 55 Jul 19 20:30 xxx
crw-rw-rw-. 1 root root 1, 5 Jul 19 07:33 zero #
屬性相同
[root@centos6 app]#ll /dev/zero
crw-rw-rw-. 1 root root 1, 5 Jul 19 07:33 /dev/zero #
屬性相同
cp
命令在復制/dev/sda1/dev/zero 這些特殊文件時,要保留屬性,否則無法使用。

*rename批量修改文件名
[root@centos6 app]#touch f{1,2,3}.txt
[root@centos6 app]#ll
total 4
prw-r--r--. 1 root root 0 Jul 19 18:58 f1
-rw-r--r--. 1 root root 0 Jul 19 21:06 f1.txt
srwxr-xr-x. 1 root root 0 Jul 19 19:02 f2
-rw-r--r--. 1 root root 0 Jul 19 21:06 f2.txt
-rw-r--r--. 1 root root 0 Oct 20 2018 f3
-rw-r--r--. 1 root root 0 Jul 19 21:06 f3.txt
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 sda1
-rw-r--r--. 1 root root 55 Jul 19 20:30 xxx
crw-rw-rw-. 1 root root 1, 5 Jul 19 07:33 zero
[root@centos6 app]#rename '.txt' '.txt.bak' *.txt #
將所有的以.txt結尾的文件,將.txt格式改為.txt.bak格式
[root@centos6 app]#ll
total 4
prw-r--r--. 1 root root 0 Jul 19 18:58 f1
-rw-r--r--. 1 root root 0 Jul 19 21:06 f1.txt.bak
srwxr-xr-x. 1 root root 0 Jul 19 19:02 f2
-rw-r--r--. 1 root root 0 Jul 19 21:06 f2.txt.bak
-rw-r--r--. 1 root root 0 Oct 20 2018 f3
-rw-r--r--. 1 root root 0 Jul 19 21:06 f3.txt.bak
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 sda1
-rw-r--r--. 1 root root 55 Jul 19 20:30 xxx
crw-rw-rw-. 1 root root 1, 5 Jul 19 07:33 zero
6
rm命令
選項 -r 遞歸,刪除目錄 -f 不提示,直接刪除;-i 提示

*rm命令刪除一個大文件技巧
rm
刪除一個大文件時,如果文件正在使用,即使刪除了這個大文件,磁盤空間也無法釋放,為了讓磁盤空間盡快釋放,可以先用> 清空這個文件,再用rm刪除這個文件,就可以馬上釋放磁盤空間。
-
如何安全的刪除一個文件,可以使用如下命令
[root@centos6 app]#shred -zuvn5 f3

#shred相當於碎紙機,z清理;v過程可見;n5重復五次;u最後把文件刪除

shred: f3: pass 1/6 (random)... shred: f3: pass 2/6 (ffffff)... shred: f3: pass 3/6 (random)... shred: f3: pass 4/6 (000000)... shred: f3: pass 5/6 (random)... shred: f3: pass 6/6 (000000)... shred: f3: removing shred: f3: renamed to 00 shred: 00: renamed to 0 shred: f3: removed

*rm刪除點打頭的文件
[root@centos6 app]#touch .a
[root@centos6 app]#ls -a
. .. .a f1 f1.txt.bak f2 f2.txt.bak f3.txt.bak sda1 xxx zero
[root@centos6 app]#rm -f * #
不能刪除點打頭的文件
[root@centos6 app]#ls -a
. .. .a #
點打頭的文件還在
[root@centos6 app]#rm -f .* #
執行這條命令才能刪除點打頭的文件
[root@centos6 app]#ls -a
. ..

*rm刪除目錄
[root@centos6 app]#mkdir f1 [root@centos6 app]#ls f1 [root@centos6 app]#rm -rf /app #
提示要把目錄也刪除,但/app是個分區掛載點,無法刪除,只把目錄裏的內容刪除 rm: cannot remove `/app': Device or resource busy [root@centos6 app]#ls [root@centos6 app]#mkdir f1 [root@centos6 app]#ls f1 [root@centos6 app]#rm -rf /app/* #不提示刪除/app [root@centos6 app]#ls
總結:分區掛載點無法刪除,要想刪除一個目錄下的文件而不刪除目錄的寫法為rm -rf /D/* ,如果rm -rf /D 則會連目錄也刪除。
7
tree命令

[root@centos6 app]#tree
.
├── f1
├── f1.txt.bak
├── f2
├── f2.txt.bak
├── f3.txt.bak
├── sda1
├── xxx
└── zero

0 directories, 8 files
[root@centos6 app]#tree -d #
只顯示目錄
.

0 directories
[root@centos6 app]#tree -L 1#
只顯示/app下的一級目錄
.
├── f1
├── f1.txt.bak
├── f2
├── f2.txt.bak
├── f3.txt.bak
├── sda1
├── xxx
└── zero

0 directories, 8 files

8mv命令

格式1mv 文件 文件

修改文件名

格式2mv 文件/目錄1 目錄2

移動文件/目錄1 到目錄2

mv目錄的時候,只能是在同一設備/媒體之間。

如果是從/dev/sda1移動到 /dev/sdb1 ,則不行。只能是先拷貝過去,再刪除。

9file命令

file 命令用來判斷文件類型,主要是查看文件頭部的magic number來判斷.

[root@zab ~]# file /bin/cat

/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNULinux 2.6.18

file -f filetxt 批量查看

file -L 查看軟連接對應文件的類型

10.查看文件狀態stat命令

[root@zab home]# stat /tmp

File: `/tmp'

Size: 4096 Blocks: 8 IO Block: 4096 directory

Device: 802h/2050d Inode: 2490369 Links: 35

Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2017-07-24 08:06:10.000000000 +0800

Modify: 2017-07-24 14:35:39.615977800 +0800

Change: 2017-07-24 14:35:39.615977800 +0800

顯示文件的大小 權限 時間戳 節點號等狀態


文件管理命令