/opt/dir/ABC/
中有多個文件allfile_123-abc allfile_123-def allfile_123-ghi allfile_123-xxx
。如何在使用bash更改名稱和擴展名時將多個文件移動到目錄?
我需要的文件被命名爲new_name-abc.pgp new_name-def.pgp new_name-ghi.pgp new_name-xxx.pgp
,然後轉移到/usr/tst/output
for file in /opt/dir/ABC/allfile_123* ;
do mv $file /usr/tst/output/"$file.pgp";
rename allfile_123 new_name /usr/tst/output/*.pgp ; done
我知道上面沒有因爲$file = /opt/dir/ABC/allfile_123*
工作。是否有可能使這項工作,或者它是一個不同的命令,而不是'for循環'?
這是用於Autosys應用程序,其中jil包含一個命令傳遞給運行bash的linux服務器的命令行。
我只能找到我的問題的每個部分的版本,但不是完全,我希望保持它在這個jil的命令行。除非腳本是絕對必要的。
你說'/ opt/dir/ABC/allfile_123 *'不起作用?它將工作,如果glob模式是準確的。當你引用它時(例如'mv「$ file」「/usr/tst/output/$file.pgp」'),你應該在''$ file「'周圍使用雙引號,但這不是你的直接問題。你傳遞給劇本的是什麼? –
我沒有把任何東西傳遞給腳本,這一切都在命令行上。我收到的錯誤是'mv:無法將'/ opt/dir/ABC/allfile_123-abc'移動到'/usr/tst/output//opt/dir/ABC/allfile_123-abc.pgp':沒有這樣的文件或目錄.' – Emile
'mv「$ file」/ usr/tst/output/new_name「$ {file#allfile_123}」。pgp'應該可以工作 –