我正在尝试使用空格的文件名让他们进入循环zip每个文件拉链后,使用以下以下删除原件:
for appdir in $(ls /home/location/$dirname); do
for logFile in $(find /home/location/$dirname/$appdir -type f -mtime +10 ( ! -iname "*.zip" ! -iname "*.gz" )); do
echo $logFile
文件我正在尝试拉动具有空间的拉链:
/home/location/hdd1/domain/servername/EXT1/ET SOME To FILENAME/xml/sdlfkd.xml
/home/location/hdd1/domain/servername/EXT1/ET SOME To FILENAME2/xml/sd2fkd.xml
我知道可以将带有空间的文件名制作到一个单个文件名中,如以下 -
find /location/$appdir -type f -mtime +10 -print0 | xargs -0 ls
从" for"条件中获取文件名的实际ZIP命令以后出现每个文件,制作zip并删除原始文件。
我在zip命令中遇到以下错误:
[stdout: 4] zip warning: name not matched: ET
zip error: Nothing to do! (ET.zip)
[stdout: 4] SOME
[stdout: 4] zip warning: name not matched: SOME
zip error: Nothing to do! (SOME.zip)
如何修改我可以每次为" for"循环提供整个文件名的条件,然后继续进行缩进每个文件并走得更远?任何帮助将不胜感激。
操纵文件时始终使用双引号。
参见例如,下面的代码将创建一个称为A B C:
的唯一文件will /home/will/a # touch "a b c"
will /home/will/a # ls -l
total 0
-rw-r--r-- 1 root system 0 Sep 21 08:47 a b c
这将创建3个不同的文件,称为A,B和C
will /home/will/a # touch a b c
will /home/will/a # ls -l
total 0
-rw-r--r-- 1 root system 0 Sep 21 08:47 a
-rw-r--r-- 1 root system 0 Sep 21 08:47 b
-rw-r--r-- 1 root system 0 Sep 21 08:47 c
所以现在想象我不会创建,而是要删除或更改这些文件,如果文件名不是预期的文件,则可能会更加有害。
在您的情况下,我会尝试以下操作:
for appdir in $(ls "/home/location/$dirname"); do
for logFile in $(find "/home/location/$dirname/$appdir" -type f -mtime +10 ( ! -iname "*.zip" ! -iname "*.gz" )); do
echo "$logFile"