awk中呼叫系統命令批量處理
工作中經常遇到在輸入一堆檔名的條件下,將其移動或者刪除或者複製。由於輸入是個檔名的集合,而不是單個檔案,因此不能直接用cp或者mv命令,可以通過awk的逐行處理的功能來處理這種情況。以下是一個例子:
$ grep -r 'TE' * | cut -d " " -f3 | awk '{system("mv "$1" ./English_mlfs/")}'
1. grep,在當前資料夾內的檔案中查詢含有TE這兩個字元的檔案。注意,如果系統認為檔案是文字檔案,就會同時顯示檔名和含有TE的那一行,如果認為是binary檔案,就會只顯示檔名,表示在某個檔案中找到了。
2. grep的輸出結果是以空格隔開的,其中檔名在第三列,所以用cut來獲取檔名列表
3. 在awk中呼叫bash命令的方法很簡單,就使用system()函式,輸入為要執行的命令的字串。$1表示第一列的資料,也就是檔名。
以後可以用awk和呼叫系統命令的方法來批量處理檔案咯!這樣就可以省掉很多手工操作,也不用麻煩的去寫指令碼檔案來處理這種簡單又經常遇到的任務了!
相關推薦
awk中呼叫系統命令批量處理
工作中經常遇到在輸入一堆檔名的條件下,將其移動或者刪除或者複製。由於輸入是個檔名的集合,而不是單個檔案,因此不能直接用cp或者mv命令,可以通過awk的逐行處理的功能來處理這種情況。以下是一個例子: $ grep -r 'TE' * | cut -d " " -f3 | a
C語言中呼叫系統命令(system popen...)
1、system(執行shell 命令) 相關函式 fork,execve,waitpid,popen 表頭檔案 #include<stdlib.h> 定義函式 int system(const char * string); 函式說明 system()會呼
批處理中呼叫 WinSCP 命令列上傳檔案
@echo off setlocal enabledelayedexpansion set ID=AY47C010 REM 設定檔案的路徑 set SHELL_DIR=H:\IDE\eclipse\workspace\XXXX\shell set CLASSES_DIR=H
kernel space 中呼叫系統呼叫對地址空間檢查
在核心中呼叫系統呼叫,需要使用get_fs,set_fs來對其保護,因為這些函式會檢查引數地址是不是 使用者空間的,但是很顯然,我們是在核心空間中呼叫這些系統呼叫。 #define get_ds() (KERNEL_DS) 可以看到這裡的get_fs 直接返回的是當前程序的地址限制,使用者程序和
java中呼叫shell命令
import java.io.BufferedReader; import java.io.InputStreamReader; public class Shell { public static void main(String[] args) { String command =
在Python中呼叫外部命令
怎麼在Python腳本里呼叫外部命令?(就好像直接輸入在Unix shell中或者windows的命令列裡) 來來來,我給你叨咕叨咕各種方法和各自優缺點: os.system("命令加引數")把命令和引數傳遞給你係統的shell中.用這個命令的好處在於你可以一次執行好多命
java呼叫系統命令Demo
java呼叫系統命令範例 import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; public class SystemCommandCall {
Node.js使用child_process呼叫系統命令示例
首先我們在D盤根目錄下新建一個test.bat檔案,他的內容如下: echo %date%%time% >> D:/test.txt 他的目的很簡單,每次呼叫這個bat檔案,都會在D:/test.txt中追加一條當前日期和時間。 然後我們安裝依賴包: npm install child_pr
Python藉助os.system,subprocess.call()函式呼叫系統命令
Python System Command While making a program in python, you may need to exeucte some shell commands for your program. For example, if
sox命令批量處理修改wav檔案取樣率,音量等
#!/bin/bash for file in *.wav; do #echo $file c=${file} #echo $c sox -v 0.9 $c -r 160
python 呼叫系統命令,執行命令列
python中呼叫系統命令的方法還是有比較多的,os/command/subprocess模組中都有方法可以做到 對比其他語言(樓主用過的語言也不多): PHP:exec(),system(), 整體感覺不好用, 阻塞很難受 jav
Mac中使用reanme命令批量修改檔名
場景: 把 dir 目錄下所有檔名以 Doc 結尾的檔案修改成以 Demo 結尾 例如: abcDoc.md => abcDemo.md 解決辦法: 1. 安裝 reanme 命
java程式碼中呼叫linux命令
有時候需要在java程式碼中呼叫linux的一些命令實現某些功能。例如1:將音訊的.wav格式轉換成.mp3格式,windows系統下可以直接呼叫ffmpeg的命令;在linux系統下,需要安裝配置好ffmpeg的環境,呼叫ffmpeg在linux轉換的命令。例如2:需要在linux
zabbix--觸發器中呼叫系統內部函式
引數 描述 Name 觸發器名稱。這個名稱可能包含支援的macros:{HOST.HOST}, {HOST.NAME}, {HOST.CONN}, {HOST.DNS}, {HOST.IP}, {ITEM.VALU
在awk中執行system命令------太有用了
有這樣一個臨時需求: 在a.txt檔案中有一萬行字串, 而二進位制檔案test能解密任何一行, 格式為./test decrypt xxx, 現在要把a.txt的所有行解密出來, 存放在b.txt, 怎麼搞? 我一開始的思路是: 寫程式逐行
如何在批處理中呼叫多個批處理?
如何在一個批處理中呼叫多個批處理呢? call 1.bat call 2.bat call 3.bat call …….bat 這樣是不行的。哪位高手指點一下,該如何實現呢? 把CALL改成start 不過這樣會開啟新的CMD視窗,你也可以給start加個/B就可以在同一
awk內部呼叫shell命令 -- shell
先 awk '{system("rm $0")}' filename -------WRONG 因為對於 system來說 $0 不再是某行全部的內容,而是 “sh” , 上面的命令相當於執行“ sh rm sh” 然後 awk '{cmd="rm "$0;system(cmd)}' filena
在Sandbox中呼叫系統工具的問題
在sandbox中要呼叫system的工具,用system函式,NSTask方式有的成功,有的不成功。 成功的例子有: /usr/sbin/screencapture /usr/bin/stat 不成功的例子有: /usr/bin/qlmanage /usr/bin/shasum /us
18、android中呼叫系統自帶檔案管理器並返回選中檔案的路徑
思路: 通過Android API呼叫系統自帶的檔案瀏覽器選取檔案獲得URI,然後將URI轉換成file,從而得到file。 import android.annotation.SuppressLint;import android.app.Activity;impo
關於android中呼叫系統拍照,返回圖片是旋轉90度..
由於專案的需要,沒有自定義拍照功能,僅僅呼叫了系統的拍照程式..但是出現了一個問題,就是拍照完成顯示圖片居然是被旋轉的圖片....解決辦法:/** * 獲取圖片的旋轉角度,有些系統把拍照的圖片旋轉了,有的沒有旋轉 */ int degree