亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更改 bash 中具有特殊字符的文件名

更改 bash 中具有特殊字符的文件名

慕工程0101907 2024-01-04 10:04:44
我們正在運行一個 Ubuntu 服務器,它會自動從客戶處通過 FTP 傳輸文件,最近這些文件現在顯示為...“file.csv;” '文件2.csv;我一直在嘗試制定 bash 和 Python 解決方案,但沒有成功。我只是想去掉單引號和分號并保留剩下的內容。這不一定是 bash,它可以是 python 甚至 perl。我在下面添加了不起作用的代碼。我什至似乎無法獲得目錄列表。有人能指出我正確的方向嗎?for i in \'*     do    echo $idone注意:更正了代碼以刪除錯誤的 $echo'
查看完整描述

3 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

find ... -exec rename像這樣使用:


find . -name "*[;']*" -exec rename "tr/';//d" {} \;

例子:


# Create example input files:

$ touch "f'o''o'" "b;a;;r;" "b';a;'';z;'"


# Build the command by first confirming that `find` finds them all:

$ find . -name "*[;']*"                            

./f'o''o'

./b';a;'';z;'

./b;a;;r;


# Find and rename them, one by one:

$ find . -name "*[;']*" -exec rename "tr/';//d" {} \;


# Confirm that rename worked as expected:

$ ls -1rt | tail -n 3                                

foo

bar

baz

您還可以使用 進行批量重命名以提高速度xargs,例如


find ... -print0 | xargs -0 ...

但就您而言,我認為逐個重命名文件已經足夠快了。


命令行實用程序rename有多種形式。他們中的大多數人應該為這項任務而努力。我使用renameAristotle Pagaltzis 的 1.601 版本。要安裝rename,只需下載其 Perl 腳本并將其放入$PATH. 或者rename使用安裝conda,如下所示:


conda install rename


查看完整回答
反對 回復 2024-01-04
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

您可以從嘗試這個 pyhon 3 腳本開始。不過我只在 Windows 中測試過。


import os


folder = ""

for root, dirs, files in os.walk(folder, topdown=False):

    for fn in files:

        path_to_file = os.path.join(root, fn)

        if "'" in fn or ";" in fn:

            print('Removing special characters from file: ' + fn)

            new_name = fn.replace("'", '').replace(";", '') 

            os.rename(path_to_file, os.path.join(root, new_name))


查看完整回答
反對 回復 2024-01-04
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

import os

filesInDirectory = os.listdir(Path)


for filename in filesInDirectory:

    if "'" in filename:

        filename.replace("'", "")

    elif ";" in filename:

        filename.replace(";", "") 

    elif ("'" and ";") in filename:

        filename.replace("'", "")

        filename.replace(";", "")

使用Python


查看完整回答
反對 回復 2024-01-04
  • 3 回答
  • 0 關注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號