作为我上一个问题的后续行动,如果我有多个表单文件
sw.ras.001
sw.ras.002
sw.ras.003
…
Run Code Online (Sandbox Code Playgroud)
我可以使用什么命令来删除ras.所有文件中间的 ?
在按回车键之前,我不小心忘记指定目的地。不mv ./*指定目的地将当前目录下的文件和目录移动到哪里?
我有一个巨大的文件树。一些文件具有相同的名称但大小写不同,例如,some_code.c和Some_Code.c。
因此,当我尝试将其复制到 NTFS/FAT 文件系统时,它会询问我是否希望它替换文件或跳过它。
有没有办法自动重命名此类文件,例如,通过添加 (1)到冲突文件的名称(如 Windows 7 那样)?
我创建了以下脚本,将定义的旧文件从源目录移动到目标目录。它运行良好。
#!/bin/bash
echo "Enter Your Source Directory"
read soure
echo "Enter Your Destination Directory"
read destination
echo "Enter Days"
read days
find "$soure" -type f -mtime "-$days" -exec mv {} "$destination" \;
echo "Files which were $days Days old moved from $soure to $destination"
Run Code Online (Sandbox Code Playgroud)
这个脚本移动文件很好,它也移动源子目录的文件,但它不会在目标目录中创建子目录。我想在其中实现这个附加功能。
举例
/home/ketan : source directory
/home/ketan/hex : source subdirectory
/home/maxi : destination directory
Run Code Online (Sandbox Code Playgroud)
当我运行这个脚本时,它也会在 maxi 目录中移动十六进制的文件,但我需要在 maxi 目录中创建相同的十六进制并将其文件以相同的十六进制移动到那里。
如何将 sftp 服务器中的文件移动到不同目录?我使用 sftp 连接到此服务器,然后尝试使用
mv myfile.csv /my/dir/myfile.csv
Run Code Online (Sandbox Code Playgroud)
但这会产生错误。如何做到这一点?
是否可以从 shell 中重命名当前工作目录(在我的特定情况下为 Bash)?如果我尝试以直接的方式执行此操作,则会出现错误:
nathan@nathan-desktop:/tmp/test$ mv . test2
mv: cannot move ‘.’ to ‘test2’: Device or resource busy
Run Code Online (Sandbox Code Playgroud)
有没有另一种方法可以在不更改当前目录的情况下执行此操作?我意识到我可以通过更改到父目录轻松完成此操作,但我很好奇是否有必要这样做。毕竟,如果我从另一个 shell 重命名目录,之后我仍然可以在原始 shell 中创建文件。
在我的 Debian 系统(嗯,我的 LMDE 系统,但足够接近)上,我至少有 3 个不同的rename程序:
/usr/local/bin/rename:这是一个 Perl 脚本,由 Tom Christiansen 编写。奇怪的是,我似乎无法找到安装它的软件包:
$ dpkg -S /usr/local/bin/rename
dpkg-query: no path found matching pattern /usr/local/bin/rename
Run Code Online (Sandbox Code Playgroud)/usr/bin/prename:另一个 perl 脚本,由 Robin Barker 编写,这是perl包的一部分:
$ dpkg -S /usr/bin/prename
perl: /usr/bin/prename
Run Code Online (Sandbox Code Playgroud)/usr/bin/file-rename:又一个 Perl 脚本,没有明确的作者信息,但提到了 Larry(大概是 Wall)和 Robin(大概是 Barker)。这个是由rename包安装的,也被符号链接到/usr/bin/rename:
$ dpkg -S /usr/bin/file-rename
rename: /usr/bin/file-rename
Run Code Online (Sandbox Code Playgroud)我也有rename.ulfromutil-linux但让我们暂时忽略那个。这 3 个 Perl 脚本有什么区别?他们似乎都有相同的手册页man rename,man file-rename并且man prename都给了我相同的页面。
我可以自己查看脚本并尝试了解它们之间的差异,但这并非微不足道,我希望有人会知道每个脚本具有哪些其他特性没有的特性。解释为什么 Debian …
我想使用 Bash 脚本重命名同一目录中的多个文件。文件名如下:
file2602201409853.p
file0901201437404.p
file0901201438761.p
file1003201410069.p
file2602201410180.p
Run Code Online (Sandbox Code Playgroud)
我想重命名为以下格式:
file2503201409853.p
file2503201437404.p
file2503201438761.p
file2503201410069.p
file2503201410180.p
Run Code Online (Sandbox Code Playgroud)
我正在阅读重命名命令,并尝试以这种方式执行此操作,但它什么也没做,我想我对语法有疑问。然后我读到您可以使用mv命令进行循环,如下所示:
for file in cmpsms*2014*.p; do
mv "$file" "${file/cmpsms*2014*.p/cmpsms25032014*.p}"
done
Run Code Online (Sandbox Code Playgroud)
但我无法重命名文件。我究竟做错了什么?
如果我疯了,我将如何将文件重命名为..或.?甚至允许这样的文件名吗?
反斜杠似乎并没有禁用点的特殊含义:
$ mv test \.
mv: `test' and `./test' are the same file
Run Code Online (Sandbox Code Playgroud) 我听说过关于zmvin 的好消息zsh,并且很想真正学会使用它。不过我对zsh还是比较缺乏经验,有一些基本的问题:
zmvin的手册页zsh(man zsh 输出“没有手动输入zmv”)zmv本地是否允许空运行?zmv?