bash 스크립트에서 cp 명령을 사용하여 공백과 $ 문자가 있는 파일을 복사하는 방법은 무엇입니까? [복사]

bash 스크립트에서 cp 명령을 사용하여 공백과 $ 문자가 있는 파일을 복사하는 방법은 무엇입니까? [복사]

$파일 이름에 공백 과 기호가 있는 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

작동해야 한다

관련 정보