我正在编写一个PHP页面,将上传的文件转换为XML.我只想将新闻文件转换为XML.唯一需要转换的文件是news.htm.我把问题缩小到这个if语句.这有什么问题?
$fileName = basename( $_FILES['uploaded']['name'] );
if( strcmp( $fileName, "news.htm") == 0 )
(
//convertToXML();
)
Run Code Online (Sandbox Code Playgroud) 我有一个文件名为"ab c.jpg","def 0.jpg","gh i.jpg"的目录
我需要一个脚本让所有以" 0.jpg"结尾的文件成为" _0.jpg"
因此,在上面的例子中,第二个文件应该变成"de f_0.jpg"
我正在编写一个处理用户归档的util,其中一个测试归档文件名为"".export
.在我的代码中,我循环遍历所有文件扩展名,并检查文件扩展名以忽略某些文件类型(例如thumb.db).
当我写Path.GetExtension(v)
或Path.GetFileName(v)
我得到一个例外的消息"路径中的非法字符." "
显然是非法的,但在Windows上 - 编辑没关系,这是非法的我原本以为该字符是'
)我可以使用该文件名.我可以告诉它允许这个角色吗?我需要编写自己的GetExtension和GetFileName吗?我能做什么?
我有一个代码,它带我到文件名的扩展名.它的工作原理是使用匹配"."的正则表达式:
new_name = e.timeStamp + "_." +
EscapeHtml (file.name.replace (/ ^. *? \. ([A-zA-Z0-9] +) $ /, "$ 1"));
Run Code Online (Sandbox Code Playgroud)
它适用于这样的简单名称:
name = asdasdasd.mp3
Run Code Online (Sandbox Code Playgroud)
但是当文件名有多个"."时它不起作用,如:
avi.conn.mp3
Run Code Online (Sandbox Code Playgroud)
如何修改我的代码以应对这些更复杂的案例?
代码'if(-e"filename")'测试在包含该代码的脚本的目录中是否存在具有名称filename的文件.
怎么做名字检查?Perl的?操作系统?Bash on POSIX-os?
'if(-e"cat string")'会在Linux上执行cat命令吗?
我想知道为了能够避免不需要的文件访问,如"../file"将访问父目录中的文件.
要分享我的支票代码:
if($folder =~ m/$([\\]?\.[\\]?\.|[\\]?\\|[\\]?\/|[\\]?\?|[\\]?*|[\\]?:|[\\]?\||[\\]?\"|[\\]?\<|[\\]?\>)^|$([\\]?\.[\\]?\.|[\\]?\\|[\\]?\/|[\\]?\?|[\\]?*|[\\]?:|[\\]?\||[\\]?\"|[\\]?\<|[\\]?\>)\/|\/([\\]?\.[\\]?\.|[\\]?\\|[\\]?\/|[\\]?\?|[\\]?*|[\\]?:|[\\]?\||[\\]?\"|[\\]?\<|[\\]?\>)\/|\/([\\]?\.[\\]?\.|[\\]?\\|[\\]?\/|[\\]?\?|[\\]?*|[\\]?:|[\\]?\||[\\]?\"|[\\]?\<|[\\]?\>)^|\$'[^']*'/)
{
#error
}
Run Code Online (Sandbox Code Playgroud)
更新正则表达式:
if($folder =~ m/(\/|\\)|$([\\]?\.[\\]?\.^|$[\\]?(\*|\?)^|\$'[^']*'/)
{
#error
}
Run Code Online (Sandbox Code Playgroud)
说明:$ folder必须是纯文件名.如果它包含Windows或POSIX路径分隔符或是(任何转义的)父目录返回链接或是(任何转义)通配符(因为它匹配第一个匹配的文件并至少在Mac OS X上返回true)或包含C ANSI转义任何地方的序列,信号错误 其他任何东西,即使不合法或阴暗,也应该简单地返回"文件不存在",因此可以提供给'if(-e $文件夹)'.
我根据包含该书的PDF文件中的标题手动重命名了许多文件(电子书).我这样做是通过手动复制PDF阅读器中的多行文本,然后在Nautilus中重命名文件.我想将这些全部添加到SVN仓库中,但由于包含0x0A
(换行符)字符的多个PDF的文件名本身,add命令失败.我的语言环境在我的.bashrc
文件中设置为UTF8,似乎Ubuntu的Nautilus文件资源管理器实用程序允许我将非打印字符粘贴到文件名中(是否可以禁用它?).
无论如何,我现在有一个包含子目录,PDF,PDF子目录等子目录的大型目录.有没有办法以递归方式遍历目录结构并从文件名中删除任何非打印字符(即:换行符)?
我尝试了以下循环文件(其名称中包含空格):
#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for f in *
do
echo "Renaming $f"
mv ${f} $(echo ${f} | sed 's/\n//g')
done
IFS=$SAVEIFS
Run Code Online (Sandbox Code Playgroud)
但是,文件名中带有换行符的文件将打印在两个单独的行中,就好像它们是单独的条目一样.我已经在SO上找到了一个可能的解决方案(sed命令来修复目录中的文件名),但它只有在所有文件都在同一目录中时才有效,而不是我目前拥有的大子目录结构.
谢谢.
我有一个sas宏,它依赖于两个不同的变量,分别用Age
和Year
表示.&Age
&Year
我想为15-18岁和2007-2010年的每个组合运行宏,并希望为这些组合中的每一个创建一个输出表(即总共16个表).
这是我的问题,我尝试在Matrix_pop_adm&Age_RP&Year
SAS不喜欢的宏中给输出表以下名称.
如何正确命名输出文件?
我有以下文件file1和file2(作为示例)
$cat file1.txt
SERVICE: 1
TASK: 1
RESULT: 1
ADDITIONAL: 1
SERVICE: 2
TASK: 2
RESULT: 2
ADDITIONAL: 2
SERVICE: 3
TASK: 3
RESULT: 3
ADDITIONAL: 3
Run Code Online (Sandbox Code Playgroud)
$cat file2.txt
SERVICE: 1
TASK: 1
RESULT: 1
ADDITIONAL: 1
SERVICE: 2
TASK: 2
RESULT: 2
ADDITIONAL: 2
SERVICE: 3
TASK: 3
RESULT: 3
ADDITIONAL: 3
Run Code Online (Sandbox Code Playgroud)
我需要以下输出:
文件的名称和每个块在SERVICE上循环:在下面的1行中用管道"|"分开
file1.txt | SERVICE: 1 | TASK: 1 | RESULT: 1 | ADDITIONAL: 1
file1.txt | SERVICE: 2 | TASK: 2 | RESULT: 2 | ADDITIONAL: …
Run Code Online (Sandbox Code Playgroud) 这是我的代码
file_name = Dir['path/xml/test/*.txt']
file_name.to_s # => ["path/xml/test/test.txt"]
Run Code Online (Sandbox Code Playgroud)
我想回来:
"test"
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的代码:
file_name = Dir['path/xml/test/*.txt']
file_name.to_s[15,60].gsub(/.txt["]/,"").gsub(/]/,"")
Run Code Online (Sandbox Code Playgroud)
但它不是很优雅.是否有更优雅的方式只返回文件名没有.txt
和[]
?
我有一个没有视频容器信息的h264视频文件,但是我仅使用8.3 FAT文件系统。使用VLC打开* .h264文件时,VLC可以正确播放该文件,因为它知道这是h264编码的视频。但是,如果我只能使用8.3格式的文件名,该怎么办?如何告诉VLC例如一个名为X.264的文件是h264视频文件?Windows Media Player 10及更高版本能够自动识别此问题。谢谢,阿维·塔尔(Avi Tal)。