Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Delete Directories and its files that begin with the same character string Post 303036893 by dellanicholson on Tuesday 16th of July 2019 10:46:25 AM
Old 07-16-2019
Delete Directories and its files that begin with the same character string

I wrote a shell script program that supposed to delete any directories and its files that begin with the same character string . The program is designed to delete directories and its files that are one day old or less and only the directories that begin with the same character string. The problem is the program doesn't delete the directories. I don't know why the script isn't working. The OS is Linux redhats. Version 6 x.

Here is the shell script
Code:
#!/bin/bash -x

NUMBER_OF_DAYS=1
MOUNT_PATH=/saswork

echo "Script Started"
echo "Deleting the files greater than ${NUMBER_OF_DAYS}"
cd ${MOUNT_PATH}
chmod 755 SAS_work*
find ${MOUNT_PATH} -mtime +${NUMBER_OF_DAYS} -name "SAS_work*"
find ${MOUNT_PATH} -mtime +${NUMBER_OF_DAYS} -name "SAS_work*" | while read DIR_NAME
do
	echo "Removing the ${DIR_NAME}"
	rm -rf "${DIR_NAME}"
done
echo "Script Completed"

Below are sample of the directories that the program should delete if the directories are one day old or less.
Code:
drwx------  4 exxc_prxd    exxc_prxd            8192 Mar 15 14:49     SAS_work08480000328E_svxxsa60001mz34
drwx------  4 izjlin           D02012192                8192 Jul 14 08:57    SAS_work8BFF000059ED_svxxsi60001mz33
drwx------  4 jxwm67     D02012192                8192 Jul 16 19:32     SAS_work8CA50000264B_svxxsi60001mz33
drwx------  4 ixjiinz          D02012192                8192 Jul 15 11:17       SAS_work9417000072ED_svcxsi60001mz34
drwx------  3 tale4           D02017434               8192 Mar 13 14:30   SAS_workAA0C000044B7_svcxksi60001m34
drwx------  4 ixjwinz        D02012192                8192 Apr 12 09:23    SAS_workBA37000044E9_svxxxcksi60001mz34
drwx------  4 bdmknyex  D02017434             8192 Mar 15 09:41   SAS_workE77600003715_svcksi60001mz34


Last edited by Scrutinizer; 07-16-2019 at 01:11 PM.. Reason: quote tags -> code tags
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Delete first 2 character from string

Hi ! All, I have to delete first 2 characters from string. How its possible? Like string value is "2001". I required output as "01" Plaese help me. Nitin (4 Replies)
Discussion started by: nitinshinde
4 Replies

2. UNIX for Dummies Questions & Answers

delete pattern files in sub directories

Hello friends, I am compiling some set of SQL scripts in a set of sub directories demoed as below. After compiling log files are being created. Each and every time after compiling time I had to go subdir by subdir to delete the log files. I am sure there should be simple way to look for all log... (4 Replies)
Discussion started by: adurga
4 Replies

3. Shell Programming and Scripting

Delete files from sub-directories over 7 days

Can any one please help me in deleting all the Files over 7 days from sub-directories A, B, C... Top-Directory Sub-Directory-A File-1 File-2 ..... File-n Sub-Directory-B File-1 File-2 ..... File-n Sub-Directory-C File-1 ... (1 Reply)
Discussion started by: sureshcisco
1 Replies

4. Shell Programming and Scripting

Delete parts of a string of character in one given column of a tab delimited file

I would like to remove characters from column 7 so that from an input file looking like this: >HWI-EAS422_12:4:1:69:89 GGTTTAAATATTGCACAAAAGGTATAGAGCGT U0 1 0 0 ref_chr8.fa 6527777 F DD I get something like that in an output file: ... (13 Replies)
Discussion started by: matlavmac
13 Replies

5. Shell Programming and Scripting

delete last character in all occurences of string

Hello all, I have a file containing the following p1 q1 p2 q2 p1 p2 p3 pr1 pr2 pr1 pr2 pa1 pa2 I want to remove the last character from all strings that start with 'p' and end with '1'. In general, I do not know what is between the first part of the string and the last part of the string.... (4 Replies)
Discussion started by: bigfoot
4 Replies

6. Shell Programming and Scripting

Delete first character from a string stored in a variable

Hallo! Example. #!/bin/bash BACKUP_DIR=/home/userx/backups/evolution echo $BACKUP_DIR # delete the first character from the string BACKUP_DIR=$(echo $BACKUP_DIR | cut -c 2-) echo $BACKUP_DIR It works. It does want I want, delete the first character from string in the... (11 Replies)
Discussion started by: linuxinho
11 Replies

7. Shell Programming and Scripting

Script to go Into Directories and Find/Delete files

I have a task, I usually do manually, but with growing responsibilities I tend to forget to do this weekly, I want to write a script that automates this, but I cant seem to work it out in my head, I have the shell of it out, but need help, and you guys have helped me with EVERY problem I have... (5 Replies)
Discussion started by: gkelly1117
5 Replies

8. Shell Programming and Scripting

Delete files in group of directories

OS: SUNOS 5.10 i386 Hello guys I wrote a shell script in bash shell to delete the files less than 30 days old. The following is the script. ======================================= #!/bin/bash for dirs in `/clu04/oracle/directory_list.lst` do find $dirs -type f -mtime -30 -exec rm {} \;... (3 Replies)
Discussion started by: zacsparrow
3 Replies

9. Shell Programming and Scripting

How to delete directories and files with xargs?

Hello, i have an dynamical apache_cache that I need to clean all days (older tant one day) with an unix command : find /usr/IBM/HTTPServer/apache_cache/ -name '*' -mtime +1 -print0|xargs -0 rm -r -- but it didn't work. Could you explain me why. So I will put below all my script :... (13 Replies)
Discussion started by: steiner
13 Replies

10. Shell Programming and Scripting

Copying files to directories based on first 6 character

guys, i did create a script but its too long, though it function the same. # cat nightlyscan.sh #!/usr/ksh deyt=`date +"%Y-%m-%d"` for i in `ls -lrt|grep $deyt|awk '{print $9}'` do cp -f $i /S1/Sophos/logger/ done # but i did not paste it all. this is the desired. (9 Replies)
Discussion started by: kenshinhimura
9 Replies
chfile(8)						      System Manager's Manual							 chfile(8)

NAME
chfile - changes attributes of AdvFS files SYNOPSIS
/usr/sbin/chfile [-l on | off] [-L on | off] filename... OPTIONS
Enables or disables (on | off) forced synchronous write requests to the specified filename. By default, forced synchronous write requests to a file are off. Enables or disables (on | off) atomic-write data logging on the specified filename. By default, atomic-write data log- ging is off. OPERAND
One or more file names. DESCRIPTION
The chfile command lets you view or change the I/O mode that will be used when write requests are made to the file. There are three set- tings for this I/O mode: The default setting. Write requests are cached, the write system call returns to the calling program, and later (asynchronously), the data is written to the disk. When this mode is enabled, write requests to a file behave as if the O_SYNC option had been set when the file was opened. The write system call returns a success value only after the data has been successfully written to disk. When this mode is enabled, write requests to a file are asynchronous and written to the AdvFS log file. Should a system crash during or after a write system call, only complete write requests (up to 8192 bytes; see restrictions below) will be processed. This atomic operation guarantees that all (or none) of a write buffer will be in the file. For example, if a write of an 8192-byte buffer was started and, during the write system call or shortly thereafter, the system crashed, when the system was rebooted, either the entire 8192 bytes of data or none of it would have been written to the file. There would be no chance that some (but not all) bytes of the write request would be in the file. When AdvFS atomic-write data logging is enabled on a file, writes to the file are guaranteed to be flushed to disk in the order that they are written by the application. This is generally not guaranteed to be the case in POSIX-compliant file systems when files are opened in asynchronous mode. For example, the following code does three writes to a file: open(file); write(buffer A); write(buffer B); write(buffer C); close(file); If the file being written to did not use atomic-write data logging, and if the file were opened for asynchronous writes, then it is possible that buffer C would be written to disk before buffer B, that buffer B would be written to disk before buffer A, and so on. This might lead to confusing file contents if the system were to crash while the application was running. But if atomic-write data logging is used, even if the file is open for asynchronous writes, the buffers would be guaranteed to be written to disk in the order in which the application wrote them. The -l and -L options are mutually exclusive. You cannot simultaneously enable both forced synchronous writes and atomic-write data log- ging on a file. However, you can override the current I/O mode for a file. For example, you can change a file's I/O mode setting from forced synchronous writes to atomic-write data logging by using the chfile -L on command. If you do not specify the options, the command displays the current state of the file's I/O attribute. The chfile command can be used on AdvFS files that have been remotely mounted across NFS. You can run the chfile command on an NFS client to examine or change the I/O mode of AdvFS files on the NFS server. NOTES
Enabling atomic-write data logging for a file will retard performance because the data is written to both the user file and the AdvFS log file. Enabling forced synchronous writes to a file also can retard system performance. RESTRICTIONS
To use the chfile command on AdvFS files that are mounted across NFS, the NFS property list daemon, proplistd, must be running on the NFS client and the fileset must have been mounted on the client using the proplist option. Only writes of up to 8192 bytes are guaranteed to be atomic for files that use atomic-write data logging. Writes that are greater than 8192 bytes are written in segments that are at most 8192 bytes in length with each segment an atomic-write. If an error should occur (disk full, ulimit, and so on), the return value from the write will specify how much was successfully written. When writing to an AdvFS file that has been mounted across NFS, a further restriction applies: the offset into the file of the write must be on an 8K page boundary because NFS performs I/O on 8K page boundaries. The showfile command does not display the I/O mode for files that are mounted across NFS. To display the I/O mode of these files, use the chfile command. Usually AdvFS, when operating on small files that do not have a size that is a multiple of 8K, puts the last part of the files (their frags) into a special metadata file called the fileset frag file as a way to reduce disk fragmentation. For example, a file that does not use atomic-write data logging and has had 20K of data written to it will occupy 20K of disk space (as displayed by the du command). Files that use atomic-write data logging are exempt from this behavior. As a result, they always have a disk usage (as displayed by the du command) that is a multiple of 8K. For example, a file that has atomic-write data logging enabled and has had 20K of data written to it occupies 24K of disk space. If a file has a frag, an attempt to activate atomic-write data logging on it will fail. Files that use atomic-write data logging cannot be memory-mapped through the mmap system call. The error ENOTSUP is returned if the attempt is made. If a file has been memory-mapped through the mmap system call, an attempt to active atomic-write data logging on it fails with the same error. EXIT STATUS
The utility returns a 0 (zero) on success and a 1 (one) on failure. EXAMPLE
The following example queries the file I/O mode. # ls -l total 8712 drwx------ 2 root system 8192 Nov 4 06:16 .tags -rwxr-xr-x 1 root system 8435752 Nov 5 08:43 data_logging_file -rw-r--r-- 1 root system 250880 Nov 5 08:44 forced_sync_file -rw-r--r-- 1 root system 195320 Nov 5 08:44 normal_async_file -rw-r----- 1 root operator 8192 Nov 4 06:16 quota.group # chfile data_logging_file I/O type = atomic write data logging # chfile forced_sync_file I/O type = forced synchronous writes # chfile normal_async_file I/O type = normal asynchronous writes You can display similar information with the showfile command: # showfile data_log- ging_file forced_sync_file normal_async_file Id Vol PgSz Pages XtntType Segs SegSz I/O Perf File 8.8001 1 16 1030 simple ** ** ftx 100% data_logging_file 7.8008 2 16 31 simple ** ** sync 100% forced_sync_file 6.8001 1 16 24 simple ** ** async 100% normal_async_file The following code fragment queries the current I/O mode for an AdvFS file: . . . advfs_opT myop; int fd; int io_mode; . . . myop.version = ADVFS_OP_CURR_VERSION; myop.operation = ADVFS_AW_DATA_LOGGING; myop.action = ADVFS_GET_INFO; myop.info_buf = &io_mode; myop.info_buf_size = sizeof(int); ret = fcntl(fd, F_ADVFS_OP, &myop); if (ret) { perror("fcnt1 failed"); if (io_mode == ADVFS_ASYNC_IO) printf("I/O mode is asynchronous. "); else if (io_mode == ADVFS_DATA_LOGGING_IO) printf("I/O mode is atomic write data logging. "); else if (io_mode == ADVFS_SYNC_IO) printf("I/O mode is forced synchronous writes. "); SEE ALSO
Commands: showfile(8) Files: advfs(4) chfile(8)
All times are GMT -4. The time now is 03:47 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy