这是我开始使用的代码:
long modifiedTime = [some time here];
File oldFile = new File("old_name.txt");
boolean renamed = oldFile.renameTo(new File("new_name.txt");
boolean timeChanged = oldFile.setLastModified(modifiedTime);
System.out.println("renamed: " + renamed);
System.out.println("time changed: " + timeChanged);
我看到的输出是:
renamed: true
time changed: false
但当我尝试时:
long modifiedTime = [some time here];
boolean renamed = new File("old_name.txt").renameTo(new File("new_name.txt"));
boolean timeChanged = new File("new_name.txt").setLastModified(modifiedTime);
System.out.println("renamed: " + renamed);
System.out.println("time changed: " + timeChanged);
这个输出似乎工作得很好:
renamed: true
time changed: true
为什么第二种方法有效,第一种方法不适用?
我看到Win32API :: File支持MoveFile().但是,我不确定如何CORE::rename()以这样的方式实施它应该重要.有人可以将这些区别 - 特别是Win32环境 - 并置
CORE::rename()File::Copy::move()Win32API::File::MoveFile()下面的代码可以工作。
$zip = new ZipArchive;
if($zip->open($path) === TRUE) {
   $zip->renameName('list.csv', 'list'.$batch_id.'.csv');
   $zip->extractTo('list_output');
   $zip->close();
}
zip 内的文件已重命名,但未解压。如果我删除 renameName 行,那么它会正常提取。我需要它来完成这两件事。
我python3.3在win7中运行脚本。在运行结束时,我删除了一个 copyFile 并将 tempFile 重命名为 copyFile,如下所示:
os.remove(scancpName)
os.rename(scantmpName, scancpName)
虽然我在重命名之前删除了旧的 copyFile,但我接到了电话:
FileExistsError: [WinError 183] 当该文件已存在时无法创建文件
我在这里错过了什么吗?
我有成千上万的文件扩展名,像这样
3_bedroom_villas_in_chennai.html__201308050010_
3_bedroom_villas_in_chennai.html__201308080012_
3_bedroom_villas_in_chennai.html__201308100012_
3_bedroom_villas_in_chennai.html__201308110034_ and so on.....
在目录中.我想将所有这些改为以下内容
3_bedroom_villas_in_chennai__201308050010_.html
3_bedroom_villas_in_chennai__201308080012_.html
3_bedroom_villas_in_chennai__201308100012_.html
3_bedroom_villas_in_chennai__201308110034_.html
当我尝试使用以下命令在Windows中执行此操作时
ren *.* *.html
我得到了以下内容
A duplicate file name exists, or the file
cannot be found.
A duplicate file name exists, or the file
cannot be found.
A duplicate file name exists, or the file
cannot be found.
A duplicate file name exists, or the file
cannot be found. and so on...
因为我知道它会尝试将所有内容更改为单个文件名
3_bedroom_villas_in_chennai.html and so on... 
在Windows或Linux上做任何方法?
我正在尝试使用 Groovy 重命名目录中的文件,但我似乎无法理解它是如何工作的。
这是我的脚本:
import groovy.io.FileType
def dir = new File("C:/Users/????/Downloads/Busta_Rhymes-Genesis-(Retail)-2001-HHI")
def replace = {
    if (it == '_') {
        ' '
    }
}
String empty = ""
dir.eachFile (FileType.FILES) { file ->
    String newName = file.name
    newName = newName.replaceAll(~/Busta_Rhymes/, "$empty")
    newName = newName.replaceAll(~/feat/, "ft")
    newName = newName.replaceAll(~/-HHI/, "$empty")
    newName = newName.replaceAll(~/--/, "-")
    newName = newName.collectReplacements(replace)
    file.renameTo newName
    println file.name
}
当我运行它时,文件的名称没有按预期更改。我想知道我怎么能让这个工作。
我有 4 个文件要重命名:
./01:
I0010001  I0020001
./02:
I0010001  I0020001
我想为.dcm每个文件添加辅助文件名,所以我尝试过:
$ mv \(*/*\) \1.dcm
mv: cannot stat '(*/*)': No such file or directory
$ mv \(./*/*\) \1.dcm
mv: cannot stat '(./*/*)': No such file or directory
$ mv \(./\*/\*\) \1.dcm
mv: cannot stat '(./*/*)': No such file or directory
$ mv "\(./*/*\)" "\1.dcm"
mv: cannot stat '\(./*/*\)': No such file or directory
$ mv 0\([1-2]\)/I00\([1-2\)]0001 0\1/I00\20001.dcm
mv: cannot stat '0([1-2])/I00([1-2)]0001': No such file or directory
$ mv "0\([1-2]\)/I00\([1-2\)]0001" …我有一个可能看起来像的目录结构
Data
    Current
        A
        B
        C
    Previous
        A
        X
在尽可能简单/快速的步骤中,我想重命名Current为Previous包含内容并擦除原始内容,使其现在:
 Data
    Previous
        A
        B
        C
我尝试过类似的东西:
from pathlib import Path
src = Path('Data/Current')
dest = Path('Data/Previous')
src.replace(dest)
文档让我希望这会起作用:
如果target指向现有文件或目录,则将无条件地替换它.
但它似乎确实是有条件的.我得到一个Directory not empty例外.我想我可以先递归删除Previous目录.这基本上是唯一的解决方案吗?或者有更好的方法来实现这一目标吗?
(我更喜欢pathlib,但如果os或者shutil是更好的锤子,我不反对他们)
(我在Linux上运行)
我试图重命名一些文件,我有一些问题.我举一个例子:我试图重命名一个名为"pronunciation_he_אָדוֹם_אֲדוּמָה"的文件.它给了我一个错误,当我深入研究它时,我发现它是因为它无法打开文件.问题不在于希伯来语的特征,而在于奇怪的空间.当我将空间更改为正常空间时,一切正常.
我使用的是python 2.7.15.
这是更改文件名称的代码:
import os
for filename in os.listdir("E:\Project\Selenium\Check"):
    os.rename(os.path.join("E:\Project\Selenium\Check" ,filename), os.path.join("E:\Project\Selenium\Check" ,"check.mp3"))
错误:WindowsError:[错误123]文件名,目录名或卷标语法不正确
当我刚尝试打开文件时:
import os
for filename in os.listdir("E:\Project\Selenium\Check"):
    file = open(os.path.join("E:\Project\Selenium\Check" ,filename))
错误:IOError:[Errno 22]无效模式('r')或文件名:'E:\ Project\Selenium\Check\pronunciation_he _?\ xe0\xc8\xe3\xe5\xc9\xed_\xe0\xc2\xe3\xe5\XCC\XEE\xc8\xe4.mp3'
提前致谢!
EDIT更改为PYTHON 3 JUST解决了这个问题
假设我有以下文件:
a_b.txt               a_b_c.txt             a_b_c_d_e.txt         a_b_c_d_e_f_g_h_i.txt
我想以这样的方式重命名它们,我将它们的文件名分开_并保留第一个和最后一个字段,所以我最终得到:
a_b.txt               a_c.txt             a_e.txt         a_i.txt
以为这很容易,但我有点卡住了......
我尝试rename使用以下正则表达式:
rename 's/^([^_]*).*([^_]*[.]txt)/$1_$2/' *.txt
但是我真正需要做的是实际拆分文件名,所以我想到了awk,但我对它并不那么精通......这就是我目前所拥有的(我知道在某些时候我应该指定FS="_"并抓住第一个和最后一个字段不知何故......
find . -name "*.txt" | awk -v mvcmd='mv "%s" "%s"\n' '{old=$0; <<split by _ here somehow and retain first and last fields>>; printf mvcmd,old,$0}'
有什么帮助吗?我没有首选方法,但使用它来学习会很好awk。谢谢!