[英]How do I print only files that contain the string only in my current directory in Bash shell?
[英]How do I add a string to the beginning of the name of a collection of files in another directory using shell
我在文件夾project / reports中有一堆.xml文件。 在“項目”文件夾中,我需要在“報告”文件夾中的每個.xml文件前添加字符串“ TEST-”。 我知道每個.xml文件都將以相同的字符串開頭,並以.xml結尾,但是我不知道中間位置。 我該怎么做呢?
即。 原始文件:constantfilename.xml,新文件:TEST-constantfilename.xml
我無法對測試名稱進行硬編碼,它只需要能夠將字符串添加到擴展名為.xml的文件夾中的所有文件中即可。 我已經看到了很多重命名當前文件夾中文件的方法,如下所示:
for f in *.xml
do
mv "$f" "TEST-$f"
done
但是當我需要從另一個目錄更改它們時,我不明白如何應用此功能。
任何幫助將不勝感激! 在有人問之前,不,我不能僅瀏覽到該文件夾,它必須來自“ project”文件夾。
經過大量的谷歌搜索后,我最終做到了這一點。 它查找我知道在文件開頭的字符串常量,並將其替換為TEST常量。
for f in project/reports/*.xml
do
a="$(echo $f | sed s/constant/TEST-constant/)"
mv "$f" "$a"
done
您可以使用以下單行代碼(假設您位於項目文件夾中):
ls reports/*xml | awk -F '/' '{print "mv "$0" "$1"/TEST-"$2}' | sh
不如您的干凈,但是應該給出相同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.