Linux用管道命令對檔案的移動

2021-09-24 14:58:18 字數 1579 閱讀 9237

我的問題是這樣的:我有乙個資料夾,裡面有大約有1000個檔案,然後我想把這樣的一部分檔案給隨機分成兩部分,一部分含有100張,另外一部分含有剩下的所有的檔案,這個時候如果是在linux圖形介面的話直接拖動即可,但是在linux終端的話,還需要下一些功夫

以下內容主要為管道命令

我們知道命令ll,可以以行的形式列出當前資料夾下所有的檔案以及目錄,如下圖

linux中的cut命令可以以列的形式來對於字串進行操作,類似於python中的字串的split函式,cut用-d引數來指定以什麼字元來進行分割,用-f引數來指明分割之後取出哪一行

比如我們輸入如下命令

ll | cut -d "

" -f 1

上一句命令的意思是,對於列出的所有一行一行的字元資訊,用-d後面跟的空格字元來進行分割,然後再取出來第一列

不信我們看一下**執行的結果

是不是只顯示了第一列了呢?

當然我們現在需要的是所有的檔案,不是目錄,所以我們要先把目錄過濾掉,如何過濾目錄,可以參考我的這一篇blog

命令如下

ll | grep"^-

"

結合在一起就是

ll | grep"^-

"| cut -d "

" -f 1

結果如下圖所示

當然,我們現在需要的是一列檔案的名稱,所以我們抓取字串的位置不對,也就是cut命令,後面所接的-f的引數1是不對的,至於是幾,我們需要按照空格來split的話,數一數最後乙個字串的位置即可,實際上這裡是11

完整的命令是

ll | grep"^-

"| cut -d "

" -f 11

結果如下圖

沒毛病,然後用head來選取前幾行,比如我們選擇100行,那麼命令就是

ll | grep"^-

"| cut -d "

" -f 11 | head -n100

之後對於這一百行,用xargs引數替換管道命令來進行move就可以啦

so,完整的命令是

ll | grep"^-

"| cut -d "

" -f 11 | head -n100 | xargs -i mv {} ./val

其中mv後面所跟的中括號意思是前面的字串,至於為什麼要新增-i,我試了一下,如果不新增的話,會爆找不到這個資料夾,我man了一下,發現-i命令的意思是str替換,也就是前面的字串作為輸入到{}中

試著執行試一下,看看是不是移動到指定的資料夾了呢?

Linux對檔案的讀取命令

1 cat and tac cat的功能是將檔案從第一行開始連續的將內容輸出在螢幕上。但是cat並不常用,原因是當檔案大,行數比較多時,螢幕無法全部容下時,只能看到一部分內容。cat語法 cat n filename n 顯示時,連行號一起輸出 使用cat查詢 cat filename grep k...

Linux下用vim對檔案加密

由於需要在網上搜了下linux下對檔案加密的操作 發現好多人的方法都比較麻煩,在這裡找了乙個比較簡單的方法分享給大家 linux用vim vi給檔案加密和解密 一 利用 vim vi 加密 優點 加密後,如果不知道密碼,就看不到明文,包括root使用者也看不了 缺點 很明顯讓別人知道加密了,容易讓別...

linux對檔案賦許可權的命令chmod的詳細說明

指令名稱 chmod 使用許可權 所有使用者 使用方式 chmod cfvr help version mode file.說明 linux unix 的檔案呼叫許可權分為 檔案擁有者 群組 其他。利用 chmod 可以藉以控制檔案如何被他人所呼叫。引數 mode 許可權設定字串,格式如下 ugoa...