从名称中有空格的目录复制文件

从名称中有空格的目录复制文件

这是我尝试过的。

inputFile=$(zenity --file-selection --title "Test" --text "Please select the file for analysis." | sed -e "s/ /\\\ /g")

我执行了sed将空格替换为 和 的操作\以使复制命令正常工作。然后从 Zenity 文件选择 GUI 中,我选择了一个文件,以便里面的inputFile值为/home/username/Documents/Learning\ and\ Development/testfile.txt

现在,当我尝试使用以下命令将此文件复制到我的工作目录时

cp $inputFile .

它仍然返回错误,

cp: cannot stat ‘/home/user/Documents/Learning\\’: No such file or directory
cp: cannot stat ‘and\\’: No such file or directory
cp: cannot stat ‘Development/WhatsApp.apk’: No such file or directory

有什么办法可以绕过这个问题吗?实际上我正在编写一个程序。所以我不想告诉用户重命名他们的文件夹名称以避免出现空格。

答案1

您可以轻松完成此操作,用双引号括起来:

cp "$inputFile" /destination/

将字符括在双引号('"')中会保留引号内所有字符的文字值,但 '$'、'`'、'\' 除外,阅读更多:http://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html

答案2

您可以在出现空格的地方添加 *,然后复制即可

 cp  /home/user/users*tst.txt  /home/user/Downloads

您要将用户 tst.txt 从主文件夹复制到下载文件夹

相关内容