$
ファイル名にスペースと記号を含むbashスクリプトの一部のファイルをコピーしようとしていますが、スクリプトがファイルを見つけることができ@
ないというメッセージでファイルをコピーできません。ファイル名内のスペースで区切られた各単語は異なるファイル名で処理されるため、失敗することがわかります。以下は私のコードです。
cp "$TRX_SOURCE_PATH/*TRX*" $DEST_PATH
間違い:
cp: cannot stat `/pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/*TRX*': No such file or directory
これにより、ls
ファイル名を表示できます。
# ls -lrt /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/*TRX*
-rw-r--r--. 1 root root 856064 Jul 27 11:54 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 856064 Jul 27 11:54 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 856064 Jul 27 11:54 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1254400 Aug 1 04:43 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 2770944 Aug 1 04:48 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1707008 Aug 1 04:57 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1204736 Aug 1 09:42 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1204736 Aug 1 09:44 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 3048448 Aug 1 10:24 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1294336 Aug 1 10:40 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1153536 Aug 1 10:45 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1108992 Aug 1 11:20 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1108992 Aug 1 11:33 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1302016 Aug 1 11:48 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
-rw-r--r--. 1 root root 1150976 Aug 1 11:57 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report [email protected]
ディレクトリには多くのファイルがあります。次の名前のファイルだけを抽出したいと思います。
Bharti Blocked TRX Report [email protected]
TNと日付スタンプが変更される場所。
cp
スクリプトでコマンドが機能するようにするには、この問題をどのように解決する必要がありますかbash
?
編集:スクリプトの隠れたスペースと特殊文字に関する別の質問を読んで、二重引用符を使用できることがわかりました。私はそれを試しましたが、動作しません。また、次のコマンドのスクリプトが失敗します。
cp: cannot stat `/pmautomation/PM/StaticUpload/20150801/2G_SITEDB_*.csv': No such file or directory
このファイルにはスペースはありません。
ls -lrt /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_*.csv
-rw-r--r--. 1 root root 4850694 Aug 2 06:51 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_KL.csv
-rw-r--r--. 1 root root 4743676 Aug 2 06:55 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_PB.csv
-rw-r--r--. 1 root root 2812108 Aug 2 07:05 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_AS.csv
-rw-r--r--. 1 root root 1934089 Aug 2 07:15 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_CH.csv
-rw-r--r--. 1 root root 2360597 Aug 2 07:30 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_JK.csv
-rw-r--r--. 1 root root 1685844 Aug 2 07:35 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_NE.csv
-rw-r--r--. 1 root root 8355408 Aug 2 07:47 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_TN.csv
-rw-r--r--. 1 root root 8356293 Aug 2 07:51 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_UE.csv
-rw-r--r--. 1 root root 3422073 Aug 2 11:04 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_DL.csv
-rw-r--r--. 1 root root 6989514 Aug 2 17:34 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_RJ.csv
-rw-r--r--. 1 root root 1276063 Aug 2 18:35 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_HP.csv
-rw-r--r--. 1 root root 2585368 Aug 2 18:50 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_HR.csv
-rw-r--r--. 1 root root 5975056 Aug 2 19:18 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_UW.csv
-rw-r--r--. 1 root root 6558770 Aug 2 19:29 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_KK.csv
-rw-r--r--. 1 root root 10222883 Aug 2 19:33 /pmautomation/PM/StaticUpload/20150801/2G_SITEDB_AP.csv
答え1
globと見なされるには、globを引用符で囲む必要があります。変数は引用する必要があります。
cp -- "$TRX_SOURCE_PATH"/*TRX* "$DEST_PATH"
答え2
#!/bin/bash
TRX_SOURCE_PATH='/src/path'
DEST_PATH='/your/dest'
cp $TRX_SOURCE_PATH/Bharti\ Blocked\ TRX\ Report\ \ Morning\$*@* $DEST_PATH
働かなければならない