概述
使用 shell 替換 檔名中的空格
背景嘗試用 find 配合 xargs, 在多個檔案裡找關鍵字
出現了問題
有空格的檔名, 並不是很好處理
準備os
centos7
場景需要在多個文字裡, 查詢某個關鍵字
方法find 配合 xargs
問題檔名裡有空格
結果xargs 會把 帶有空格的檔名, 當做多個檔案
處理使用 -i {} 處理
結果可以找出來了
但是會丟失 檔名
所以, 還是得換別的思路來處理
概述列印檔案名
查詢xargs 執行多條命令
概述xargs 後面, 可以一次執行多個命令
命令
> find . -type f | xargs -i sh -c 'echo {}; grep "#" {}'
結果還是失敗了
因為 grep 那裡, 還是會把 含有空格 的檔名, 分開
所以還是 寫指令碼 吧
指令碼概述
將之前的思路, 寫到乙個指令碼裡
指令碼
#!/bin/bash
# 指令碼名字, 叫 script01.sh
# arg1 是 需要匹配的模式, 引數用 "" 包一下
# arg2 是 檔名
echo $2
grep "$1" "$2"
最終命令
命令
> find . -type f | xargs -i ./script01.sh "#" {}
結果可以正常顯示和列印
問題就算沒有模式, 檔名 也會被列印
一定程度上影響了判斷
概述批量修改檔名
然後直接 grep 查詢
問題: 修改檔名
如何修改檔名
思路1: 刪除空格
不行note1 2 修改後是 note12
可是如果真的有 note12 怎麼辦?
思路2: 替換空格
使用特殊的字元替換
-
_其他合法字元
注意避免之前的重名問題即可
指令碼
#!/bin/bash
# 指令碼名 script02.sh
# $1 是需要修改的檔名
# 涉及到 shell 的一些 字串操作, 這個後續會講
from=$1
echo $from
# $from 如果是 find 找出來的, 會含有乙個路徑, 這個操作的目的, 是去掉 路徑, 留下 檔名
from=$
echo $from
to=$
echo $to
mv "$" $to
最終命令
命令
> find . -type f -name "* *" | xargs -i ./script02.sh {}
> find . -type f | xargs grep "#"
結果還不錯
ref學習 bash
其他以後命名一定注意, 不會在 檔案 和 目錄 名稱裡, 帶空格
後續shell 字串擷取
python 批量替換檔名
你要是這樣學習看到這種噁心不,需求來了,批量替換檔名 movie name os.listdir h 妙味課堂 獲取所有的檔名列表 去掉node ts koa vue 程式設計開發 2018最新node ts koa vue 全棧開發 前後端 完結 0,1項還有最後一項跟這個無關 moview na...
修改檔名稱或者替換檔名中的內容
import osdef putname path,flag,oldname,newname 修改檔名稱或者替換檔名中的內容 dirlist os.listdir path for i in dirlist if i.startswith continue newpath os.path.join ...
python批量替換檔名中的共同字元
lesson 1 2 單詞解讀.mp4 1 2 單詞解讀.mp4 如下 coding utf 8 import os 獲得資料夾下檔名列表 path r g baidunetdiskdownload 第1冊 path unicode path,utf8 file list os.listdir pa...