如何复制Unix中包含空格的文件名/路径? [复制]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

我的目标是搜索包含模式的文件并将其复制到文件夹。文件可能在文件夹中的许多文件夹中可用(例如/ home / abc / logs / ....)。某些文件名和文件夹带有空格字符,包括空格。我正在尝试将找到的结果分配给变量并将其复制。但是结果是“参数列表太长”

Linux服务器

pattern="somesttring" ;
LOG_FILE_PATH="/path/to/logs/"
LOGS_TO_COPY=$(grep -Hrn "$pattern" "$LOG_FILE_PATH" | cut -d: -f1)
cp $LOGS_TO_COPY temp #temp is folder to which i have to copy 

我收到以下错误:

cp $LOGS_TO_COPY temp/
-bash: /bin/cp: Argument list too long
bash shell unix cp file-copying
1个回答
0
投票

不要将其存储在变量中。

grep -lHrn "$pattern" "$LOG_FILE_PATH" | while IFS= read -r file; do cp "$file" temp; done

还请注意,您不需要剪切grep结果,因为-l标志仅提供您想要的文件名。

如果必须将其存储在变量中,请使用与上述相同的模式将其存储到array变量中,这将用于区分文件中的空白与空白。

© www.soinside.com 2019 - 2024. All rights reserved.